Dockerfile指令
1.基础镜像相关
FROM
说明:指定基础镜像,所有 Dockerfile 必须以这个指令开始。
示例:
FROM ubuntu:20.04
FROM python:3.9-slim
2.维护者信息
LABEL
说明:为镜像添加元数据,如作者、版本等。
示例:
LABEL maintainer="yourname@example.com"
LABEL version="1.0"
3.环境配置
ENV
说明:设置环境变量,可以在后续指令中使用。
示例:
ENV APP_HOME /app
ENV DEBUG_MODE true
4.文件操作
COPY
说明:将主机文件复制到镜像中。
示例:
COPY . /app
COPY requirements.txt /app/
ADD
说明:类似 COPY,但支持自动解压远程文件。
示例:
ADD https://example.com/file.tar.gz /app/
RUN
说明:在镜像中执行命令。
示例:
RUN apt-get update && apt-get install -y python3-pip
RUN pip install -r requirements.txt
5.工作目录
WORKDIR
说明:设置工作目录,后续指令默认在这个目录下执行。
示例:
WORKDIR /app
6.镜像启动配置
CMD
说明:指定容器启动时默认执行的命令。
示例:
CMD ["python", "app.py"]
ENTRYPOINT
说明:覆盖容器的入口点,与 CMD 配合使用。
示例:
ENTRYPOINT ["python"]
CMD ["app.py"]
7.端口和卷
EXPOSE
说明:声明容器运行时监听的端口。
示例:
EXPOSE 8080
VOLUME
说明:创建挂载点,用于数据持久化。
示例:
VOLUME /data
8.构建信息
ARG
说明:定义构建时的变量,仅在构建过程中有效。
示例:
ARG BUILD_VERSION=1.0
ONBUILD
说明:设置镜像在被其他镜像作为基础镜像时自动执行的指令。
示例:
ONBUILD COPY . /app
9.用户和群组
USER
说明:指定运行容器时的用户。
示例:
USER myuser
GROUPADD
说明:创建用户组。
示例:
GROUPADD mygroup
10.清理操作
STOPSIGNAL
说明:指定停止容器的信号。
示例:
STOPSIGNAL SIGTERM
HEALTHCHECK
说明:设置容器的健康检查命令。
示例:
HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost/ || exit 1
11.注释
说明:用于添加注释。
示例:
# 这是一个注释
12.SHELL
说明:指定默认的 shell 类型。
示例:
SHELL ["/bin/bash", "-c"]
常用示例
以下是一个完整的 Dockerfile 示例:
# 使用官方 Python 镜像作为基础镜像
FROM python:3.9-slim# 设置维护者信息
LABEL maintainer="yourname@example.com"# 设置环境变量
ENV APP_HOME /app# 设置工作目录
WORKDIR $APP_HOME# 复制当前目录下的所有文件到镜像的工作目录
COPY . .# 安装依赖
RUN pip install -r requirements.txt# 暴露端口
EXPOSE 8080# 设置容器启动时默认执行的命令
CMD ["python", "app.py"]