Dockerfile是用于定义Docker镜像构建过程的文本文件,它包含一系列的指令和配置选项。以下是一些常见的Dockerfile配置和其作用的详细说明,以及适用的示例和使用场景:
FROM:指定基础镜像,作为构建新镜像的起点。它是Dockerfile中的第一条指令,必须出现在Dockerfile中。
示例:
FROM ubuntu:latest
使用场景:使用基础镜像构建自定义镜像。
WORKDIR:设置工作目录,用于在容器内部执行后续命令时的工作路径。
示例:
WORKDIR /app
使用场景:指定容器内部的工作目录,用于运行和构建应用程序。
COPY/ADD:将本地文件或目录复制到容器中的指定路径。
示例:
COPY app.py /app/app.py
使用场景:将应用程序代码、配置文件或其他资源复制到镜像中。
RUN:在镜像构建期间执行命令。可以执行任何适用于基础镜像的命令。
示例:
RUN apt-get update && apt-get install -y python3
使用场景:安装软件包、运行编译命令、设置环境变量等。
EXPOSE:声明容器运行时将监听的端口。
示例:
EXPOSE 8080
使用场景:声明容器内应用程序监听的端口。
CMD:设置容器启动时要执行的命令,可以有多个CMD指令,但只有最后一个会生效。
示例:
CMD ["python", "app.py"]
使用场景:指定容器启动时要运行的默认命令,例如启动应用程序或服务。
ENV:设置环境变量。
示例:
ENV MYSQL_USER=admin \ MYSQL_PASSWORD=pass123 \ MYSQL_DATABASE=mydb
使用场景:设置应用程序运行所需的环境变量。
ENTRYPOINT:设置容器启动时要执行的命令,与CMD不同的是,ENTRYPOINT指定的命令不会被覆盖。
示例:
ENTRYPOINT ["python", "app.py"]
使用场景:与CMD结合使用,提供容器启动的默认执行命令,并允许在命令行中传递参数。
VOLUME:声明持久化数据的挂载点。
示例:
VOLUME ["/data"]
使用场景:声明需要在容器和主机之间共享的目录,以持久化保存数据。