使用docker 解决一个小问题,你也可能用的到-阿里云开发者社区

开发者社区> 互联网fans> 正文

使用docker 解决一个小问题,你也可能用的到

简介: 以前一直觉得docker是运维用的工具,或者devops 用的工具,一般人应该用不上,直到最近发现docker 还有另外一个妙用,不管是什么语言。 会网络不好的时候,nodejs npm 仓库 、ruby gem仓库、python的 PyPI 、java 的Maven 等都不是很稳定,容易挂, ...
+关注继续查看

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

 

test

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Failed to get D-Bus connection: Operation not permitted —解决Docker中CentOS镜像无法使用systemd的问题
解决Docker中CentOS镜像无法使用systemd的问题:Failed to get D-Bus connection: Operation not permitted
8673 0
Docker发布libnetwork,着手解决网络问题
本文讲的是Docker发布libnetwork,着手解决网络问题,【编者的话】5月1日,Docker发布了自家的容器网络管理项目libnetwork,libnetwork使用Go语言编写,目标是定义一个容器网络模型(CNM),并为应用程序提供一致的编程接口以及网络抽象。
1052 0
"无法删除数据库,因为该数据库当前正在使用"问题解决
原文:"无法删除数据库,因为该数据库当前正在使用"问题解决 异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html  以前刚学数据库的时候比较苦恼这个问题,今天删除的时候又看见了,正好一起记录一下: 图形化方法: 命令行方法...
1256 0
解决vmware 桥联 再次使用联不上网的问题
在vmare里 编辑 虚拟网络配置   桥联  自动设置 改为你正在联网的网卡  这个问题针对有线网卡 和无限网卡使用的问题
512 0
Microsoft FTP7.5 For IIS7.x使用中的一些问题及解决方法
最近在IIS7.0上安装了Microsoft FTP7.5,但是使用FTP7.5的过程中,却遇到不少问题,在网上找到有用资料不多,经过一个下午的摸索,在这里分享出来,希望可以帮助那些在使用Microsoft FTP7.5时遇到类似问题的朋友。
1027 0
SpringBoot Jpa 使用问题解决整合
1. 启动项目报错 Not a managed type: class com.xzxx 这种问题一般出在多模块开发中的依赖传递导致的问题,该问题的原因是启动类找不到对应的bean。
920 0
+关注
互联网fans
迷失在大前端海洋中的孩子
172
文章
29
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载