本节我们自己打包一个docker镜像并发布到官方的镜像仓库中。这样任何人只需执行以下命令:
docker run -d -p 3000:3000 finleyma/express:1.0
就可以访问一个简单的express程序了。
需要你有简单的express使用经验 实现过程非常简单:
npm install express-generator -g
express myapp
FROM node:10.8.0-alpine
MAINTAINER www.mafeifan.com
# 将根目录下的文件都copy到container(运行此镜像的容器)文件系统的app文件夹下
ADD . /app/
# 设置工作目录,下面的RUN命令会在工作目录执行
WORKDIR /app
# 安装项目依赖包
RUN npm install
# 暴露容器内的3000端口
EXPOSE 3000
# 容器启动时执行的命令,类似npm run start
CMD ["npm", "start"]
docker build -t finleyma/express:1.0 .
别忘了最后的点,表示当前目录docker run -d -p 3000:3000 finleyma/express:1.0
docker login
, docker push finleyma/express:1.0
docker run -it --rm finleyma/express:1.0 ash
简要说下参数:image.png
简单总结使用Docker的好处:
问题:容器内的 node_modules 是本来就有还是容器执行 npm install 产生的呢? 答案:是构建的时候打包进镜像内了。我们看一下体积,有20M而且进到容器内, ls -l node_modules 时间也是打包的什么,并不是当前时间。
image.png