Dockerfile 是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker 通过读取 Dockerfile 中的指令自动生成映像。 docker build 命令用于从 Dockerfile 构建映像。可以在 docker build 命令中使用-f 标志指向文件系统中任何位置的 Dockerfile。
Docker 从上到下的顺序运行 Dockerfile 的指令,第一条指令必须是 FROM。
用于设置基本映像,FROM 必须作为第一条指令
docker 镜像和指令的创建者
用于执行映像的应用程序
CMD ["executable","param1","param2"]
用于执行当前映像的任何命令
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME"
用于添加标签,设置映像标签
LABEL maintainer="manon.icu"
用于暴露端口到网络
#暴露80端口
expose 80
expose 80/tcp
设置环境变量
FROM node:12
ENV workdirectory /usr/node
用于将源文件复制到目的地
COPY dist /www/dist
docker 镜像启动后的第一条执行命令
FROM ubuntu:latest
ENTRYPOINT ["ls"]
挂载卷
FROM node:12
RUN mkdir /node
WORKDIR /node
RUN echo "Welcome to Node.js" > node
VOLUME /node
设置运行容器的账户
USER admin
#
RUN adduser -D admin
USER admin
用于为 RUN/CMD/COPY 指令设置工作目录,如不存在,会默认创建
用于在创建时接收的参数
ARG JAVA_PATH=/opt/jdk/jdk1.8.0_251
ENV JAVA_HOME ${JAVA_PATH}
用于指定将 Dockerfile
中的镜像用作另一个镜像的基础镜像时运行的命令
FROM node:12
RUN mkdir -p /usr/node/app
WORKDIR /usr/node/app
ONBUILD COPY package.json /usr/node/app/
ONBUILD RUN npm install
ONBUILD COPY . /usr/node/app
CMD [ "npm", "start" ]
STOPSIGNAL SIGQUIT
设置 docker 镜像默认的终端
SHELL ["/bin/bash","-c","echo hello"]
检查镜像是否健康运行,需要在镜像内部持续运行一段命令
FROM ubuntu:latest
HEALTHCHECK --interval=60s --timeout=5s \
CMD curl -f http://fosstechnix.info/ || exit 1
EXPOSE 80
用于设置 docker 镜像构建过程中忽略的文件
sudo vim .dockerignore
*.yaml
__pycache__/
.git
.aws
.env
FROM node:lts-alpine
WORKDIR /app
ADD . /app
RUN npm install
CMD ["npm", "start"]