# 使用官方镜像作为父镜像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"]