zoukankan      html  css  js  c++  java
  • 使用docker 解决一个小问题,你也可能用的到

    以前一直觉得docker是运维用的工具,或者devops 用的工具,一般人应该用不上,直到最近发现docker 还有另外一个妙用,不管是什么语言。

    会网络不好的时候,nodejs npm 仓库 、ruby gem仓库、python的 PyPI 、java 的Maven 等都不是很稳定,容易挂,

    还有就是长时间没有更改构建过程的 项目再次初始化时候不是找不见依赖包,就是从github 下载资源失败等等都导致项目初始化失败,

    特别是封闭式开发(断网)或者驻厂开发(特殊环境只能上内网)都无法从这些源下载依赖包

    用docker 可以很好的解决这个问题

    以nodejs为例 ,这是我一个项目中的 Dockerfile 文件

    #设置基础镜像,如果本地没有该镜像,会从Docker.io服务器pull镜像
    FROM node:8.5.0
    #创建app目录,保存我们的代码
    RUN mkdir -p /usr/src/node
    #设置工作目录
    WORKDIR /usr/src/node
    
    #复制所有文件到 工作目录。
    COPY . /usr/src/node
    
    #编译运行node项目,使用npm安装程序的所有依赖,利用taobao的npm安装
    #ENV NODE_ENV production
    ENV NODE_ENV  development
    
    WORKDIR /usr/src/node/
    RUN npm install 
    
    #暴露container的端口
    EXPOSE  8080
    
    #运行命令
    #CMD ["npm", "run","web"]
    CMD ["npm", "run","getdata"]

    然后执行构建镜像的命令

    webjs@webjs-upc:~/codepalce/nodejslearn$ sudo docker build -t  my-spider .
    Sending build context to Docker daemon  7.52 MB
    Step 1 : FROM node:8.5.0
     ---> de1099630c13
    Step 2 : RUN mkdir -p /usr/src/node
     ---> Using cache
     ---> 5d5f5bc2b37c
    Step 3 : WORKDIR /usr/src/node
     ---> Using cache
     ---> 6dd09a7a7e9e
    Step 4 : COPY . /usr/src/node
     ---> a57935049527
    Removing intermediate container 8a0d964fe8e9
    Step 5 : ENV NODE_ENV development
     ---> Running in 8e5098063d3a
     ---> 4fb90a8eed24
    Removing intermediate container 8e5098063d3a
    Step 6 : WORKDIR /usr/src/node/
     ---> Running in b07d42075879
     ---> 108f84cfeeae
    Removing intermediate container b07d42075879
    Step 7 : RUN npm install
     ---> Running in 69b936a8763f
    npm info it worked if it ends with ok
    npm info using npm@5.3.0
    npm info using node@v8.5.0
    npm info lifecycle OpenShift-Sample-App@1.0.0~preinstall: OpenShift-Sample-App@1.0.0
    npm http fetch GET 200 https://registry.npmjs.org/js-base64 876ms
    npm http fetch GET 200 https://registry.npmjs.org/express 911ms
    npm http fetch GET 200 https://registry.npmjs.org/async 140ms
    npm http fetch GET 200 https://registry.npmjs.org/request 160ms

    可以看到执行npm install 后开始安装npm依赖包,最后看下镜像大小

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    <none>              <none>              108f84cfeeae        4 minutes ago       679.8 MB
    my-spider           latest              2cf0919aa431        5 days ago          758.1 MB
    my-web              latest              2cf0919aa431        5 days ago          758.1 MB

    生成的镜像大约500m,生成的这些镜像都包含了依赖包,在其他机器上使用这些包时候都不用在下载这些依赖

  • 相关阅读:
    (转)在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 定位指定的服务器/实例时出错)
    C++面试题集(最全的C\C++试题集和答案)
    linq
    sqlserver 读取多个表的分页存储过程(参考)
    xml xslt linqxml
    .net 文件操作的一点记录
    HTTP压缩
    图片防盗链
    随笔
    datareader 与 应用程序池
  • 原文地址:https://www.cnblogs.com/qqloving/p/7695046.html
Copyright © 2011-2022 走看看