使用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
相关文章
|
网络协议 Docker 容器
使用 docker 后出现的网络异常现象
硬件: [root@sh-storage-128204 ~]# dmidecode -t system dmidecode 2.12 SMBIOS 2.7 present. Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: To be filled by O.E.
2746 0
|
18天前
|
Docker 容器
进入Docker容器中
进入Docker容器中
32 2
|
1月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
1月前
|
Oracle 关系型数据库 数据库
|
7天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
11 0
|
15天前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
23 1
|
18天前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
42 1
|
22天前
|
监控 数据可视化 虚拟化
Docker容器常用命令笔记分享
Docker容器常用命令笔记分享
50 2
|
29天前
|
消息中间件 Linux 开发工具
rabbitmq使用docker容器挂载宿主机配置文件时无法访问控制台
rabbitmq使用docker容器挂载宿主机配置文件时无法访问控制台
|
29天前
|
JavaScript Shell Docker