使用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
相关文章
|
Linux Shell 数据安全/隐私保护
|
9天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
137 77
|
17天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
11天前
|
数据建模 应用服务中间件 nginx
docker替换宿主与容器的映射端口和文件路径
通过正确配置 Docker 的端口和文件路径映射,可以有效地管理容器化应用程序,确保其高效运行和数据持久性。在生产环境中,动态替换映射配置有助于灵活应对各种需求变化。以上方法和步骤提供了一种可靠且易于操作的方案,帮助您轻松管理 Docker 容器的端口和路径映射。
50 3
|
18天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
51 7
|
18天前
|
存储 Prometheus 监控
Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行
本文深入探讨了在Docker容器内进行应用调试与故障排除的方法与技巧,包括使用日志、进入容器检查、利用监控工具及检查配置等,旨在帮助用户有效应对应用部署中的挑战,确保应用稳定运行。
29 5
|
18天前
|
开发框架 安全 开发者
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。
Docker 是一种容器化技术,支持开发者将应用及其依赖打包成容器,在不同平台运行而无需修改。本文探讨了 Docker 在多平台应用构建与部署中的作用,包括环境一致性、依赖管理、快速构建等优势,以及部署流程和注意事项,展示了 Docker 如何简化开发与部署过程,提高效率和可移植性。
43 4
|
18天前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
44 3
|
18天前
|
存储 安全 数据安全/隐私保护
Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。
在数字化时代,Docker 容器化应用管理更加高效,但数据安全和业务连续性成为关键。本文探讨了 Docker 应用的备份与恢复策略,涵盖备份的重要性、内容、方法及常见工具,制定备份策略,恢复流程及注意事项,并通过案例分析和未来趋势展望,强调备份与恢复在保障应用安全中的重要性。
25 2
|
18天前
|
存储 安全 数据中心
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具
Docker 容器凭借轻量级和高效的特性,成为应用部署的重要工具。本文探讨了 Docker 如何通过 Namespace 和 Cgroups 实现 CPU、内存、网络和存储资源的隔离,提高系统安全性和资源利用率,以及面临的挑战和应对策略。
33 1