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,生成的这些镜像都包含了依赖包,在其他机器上使用这些包时候都不用在下载这些依赖

  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/qqloving/p/7695046.html
Copyright © 2011-2022 走看看