一、关于DockerFile
在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
二、Dockerfile的示例如下所示
FROM node:12
RUN rm -f /etc/localtime
&& ln -s /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
ENV PORT 12001
EXPOSE $PORT
WORKDIR /app
COPY package-lock.json package.json ./
RUN npm install
VOLUME /app/node_modules
COPY . ./
ENTRYPOINT ["/app/entrypoint"]
CMD [“npm”, “start”]
2.1 FORM
指明构建的新镜像是来自于哪个基础镜像,例如:
FORM node:12 指定tag版本为12的node基础镜像
2.2 RUN
构建镜像时运行的Shell命令,例如:
配置时区
RUN rm -f /etc/localtime \
&& ln -s /usr/share/zoneinfo/Asia/Chongqing /etc/localtime
2.3 ENV
用于设置环境变量)
在镜像中设置一个环境变量,例如:
ENV:PORT 12001
2.4 EXPOSE
指定容器需要映射到宿主机的端口,例如
EXPOSE: $PORT
2.5 WORKDIR
指定工作目录,例如:
WORKDIR /app
2.6 COPY
复制文件到镜像
COPY package-lock.json package.json ./
2.7 RUN
构建镜像时运行的命令,例如:
RUN npm install
2.8 VOLUME
指定容器挂载点到宿主机自动生成的目录,例如
VOLUME /app/node_modules
2.9 ENTRYPOINT
启动容器时执行的Shell命令,同CMD类似,只是由ENTRYPOINT启动的程序不会被docker run命令行指定的参数所覆盖,仅有最后一个会生效。
ENTRYPOINT ["/app/entrypoint"]
2.9 CMD
启动容器时执行的Shell命令
CMD ["npm", "start"]