# 使用官方镜像作为父镜像
FROM node:current-slim
# 设置工作目录,该工作目录属于镜像文件系统
WORKDIR /usr/src/app
# 将本机的 package.json 复制到当前目录(也就是上面设置的工作目录)
COPY package.json .
# 在镜像文件系统中运行该命令
RUN npm install
# 容器在运行时监听的端口
EXPOSE 8080
# 一些元数据(meatdata),描述了如何基于此镜像运行容器,在这个例子中,它表示这个映像要支持的容器化进程是 npm start。
CMD [ "npm", "start" ]
# 将本机的其余源代码复制到 image 的文件系统中
COPY . .
FROM
指定基础容器RUN
执行命令。需要注意的是,每一个 RUN 命令就会建立一层镜像,所以在使用过程中要用 &&
来链接,以减少镜像层数。撰写 Dockerfile 的时候,要经常提醒自己,这并不是在写 Shell 脚本,而是在定义每一层该如何构建。镜像是多层存储,每一层的东西并不会在下一层被删除,会一直跟随着镜像。因此镜像构建时,一定要确保每一层只添加真正需要添加的东西,任何无关的东西都应该清理掉。- shell 格式:
RUN <命令>
- exec 格式:
RUN ["可执行文件", "参数1", "参数2"]