根据项目需要,我需要创建一个NodeJS的docker image, 就是创建一个微服务放到公司统一的云服务里面,以便其他人可以调用服务的接口,简单总结一下创建Docker image的过程:
1. 安装Docker Desktop on windows,具体可以参考。
通过网站可以查询怎么去下载安装该软件,但是我们在安装的时候要注意自己的windows系统是什么系统,不同的系统版本安装的时候要注意,比如支持wsl2的系统,会希望默认用wsl的方式运行docker,这样performance更好(可能这方面没注意,只是用来开发,我没有体验性能问题)。
2. 选base image.
我们在选择base image 的时候,考虑我们写的程序需要的运行环境,由于我们用的是NodeJS,所以我们首先选的image要包含NodeJS,最后运行环境所用的image是什么版本,比如我们选的就是alpine:3.11,所以我们最后我们选择的base image就是node:12.17.0-alpine3.11.具体可以参考docker hub,在这个目录下可以查询到很多的base image, 最好跟开发时用的node版本一致。
3. 配置Dockerfile.
node:12.17.0-alpine3.11只是我们用来编译的时候用到的image,所以在只是一个过渡的image, 最后运行的image是alpine3.11,所以build image的dockerfile是这样的:

通过上面的Dockerfile配置,先安装了pkg, 用的是pkg对node程序进行打包的。
下面是最后的运行的image alpine:3.11, 由于alpine是很干净的系统,所以我们要运行编译完的image的话,需要

通过上面的Dockerfile可以看到,在运行环境中安装了libstdc++和libgcc,下一步就是copy编译的文件到运行环境中,并且设置用户权限。

在--from=builder可以看出从中间过程copy编译的程序和配置文件到运行的image下面,上面的截图也可以看出我们设置了用户名和组,在该用户下启动程序。具体可以参考官方文档来怎样创建账户修改权限等等。
4. 编译image通过dockerfile
上面的三个截图是为了具体说明,从而将一个统一的Dockfile进行了分割,打开cmd窗口,更换目录到dockerfile所在的位置,最后执行下面的命令
docker build --build-arg PORT=9700 -t app .
如果有多个参数(Dockerfile中的ARG)那么就需要有多次--build-arg
本文介绍了如何在Windows上安装Docker Desktop,选择合适的base image(NodeJS的alpine版本),配置Dockerfile以构建和运行环境,以及如何编译Docker image。重点讲解了Dockerfile的内容,包括安装pkg,设置运行环境,安装依赖库,复制程序并调整用户权限。
2527

被折叠的 条评论
为什么被折叠?



