使用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
相关文章
|
11天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
49 2
|
Ubuntu Linux Shell
docker使用总结
1.docker的基本概念: Docker包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository) 理解了这三个概念,就理解了Docker 的整个生命周期。
1084 0
|
9天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
13天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
1天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
20 5
|
3天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
2天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
9 1
|
8天前
|
JavaScript 开发者 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
8天前
|
持续交付 开发者 Docker
Docker容器化技术实战指南
Docker容器化技术实战指南
24 1
|
10天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。