Dockerfile 命令

本文最后更新于:2023-08-11 13:07 星期五

Dockerfile 命令

1. FROM 命令

  • 作用:指定基础镜像。
  • 示例:FROM ubuntu:20.04

2. MAINTAINER 命令

  • 作用:指定镜像作者的信息(已过时,建议使用 LABEL)。
  • 示例:MAINTAINER yourname@example.com

3. LABEL 命令

  • 作用:为镜像添加元数据。
  • 示例:LABEL maintainer="yourname@example.com"

4. RUN 命令

  • 作用:在镜像内部执行命令,并生成新的镜像层。
  • 示例:RUN apt-get update && apt-get install -y nginx

5. CMD 命令

  • 作用:指定容器启动后默认执行的命令。
  • 示例:CMD ["nginx", "-g", "daemon off;"]

注意事项:

  • CMD 命令定义的命令在容器启动时会被执行,但可以被传递给 docker run 命令的参数覆盖。
  • Dockerfile 中只能有一个 CMD 命令,多个命令只有最后一个会生效。

6. ENTRYPOINT 命令

  • 作用:设置容器启动时执行的命令,不会被容器启动命令覆盖。
  • 示例:ENTRYPOINT ["nginx", "-g", "daemon off;"]

注意事项:

  • ENTRYPOINT 命令定义的命令在容器启动时始终会被执行,不会被 docker run 命令的参数覆盖。
  • 如果需要覆盖 ENTRYPOINT 定义的命令,可以使用 docker run 命令的 --entrypoint 参数。

不同之处:

  • CMD 命令的参数会被传递给 ENTRYPOINT 定义的命令,即 CMD 中的内容可以看作是默认的参数。

7. ADD 命令

  • 作用:将文件、目录或远程文件复制到镜像中。
  • 示例:ADD app.tar.gz /myapp/

8. COPY 命令

  • 作用:将文件或目录复制到镜像中。
  • 示例:COPY app-files /myapp/

区别:

  • ADD 命令支持自动解压缩和 URL 下载,COPY 命令不支持。

9. ENV 命令

  • 作用:设置环境变量。
  • 示例:ENV MY_VAR=myvalue

10. ARG 命令

  • 作用:定义构建时的变量。
  • 示例:ARG build_version=1.0

区别:

  • ENV 命令用于设置容器运行时环境变量,ARG 命令用于构建过程中传递参数。

11. EXPOSE 命令

  • 作用:声明容器将监听的端口。
  • 示例:EXPOSE 80 443

12. VOLUME 命令

  • 作用:声明容器挂载点。
  • 示例:VOLUME /data

13. USER 命令

  • 作用:指定容器中进程的用户。
  • 示例:USER appuser

14. WORKDIR 命令

  • 作用:设置容器中的工作目录。
  • 示例:WORKDIR /app

15. ONBUILD 命令

  • 作用:定义触发器指令,会在子镜像构建时执行。
  • 示例:ONBUILD ADD . /app/src

16. STOPSIGNAL 命令

  • 作用:设置容器停止时发送的信号。
  • 示例:STOPSIGNAL SIGQUIT

17. HEALTHCHECK 命令

  • 作用:定义容器的健康检查命令。
  • 示例:HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost/ || exit 1

18. SHELL 命令

  • 作用:设置默认的 shell。
  • 示例:SHELL ["/bin/bash", "-c"]

Spring Boot 整合 Docker 示例

步骤

  1. 创建 Spring Boot 项目:
    创建一个简单的 Spring Boot 项目,例如一个基本的 REST API 应用。

  2. 编写 Dockerfile:
    在项目根目录下创建一个名为 Dockerfile 的文件,并根据你的项目配置编写 Dockerfile。以下是一个示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 使用一个基础的 Java 镜像
    FROM adoptopenjdk/openjdk11:alpine-jre

    # 设置工作目录
    WORKDIR /app

    # 复制 JAR 文件到容器中
    COPY target/your-app.jar app.jar

    # 暴露 Spring Boot 应用监听的端口
    EXPOSE 8080

    # 启动 Spring Boot 应用
    CMD ["java", "-jar", "app.jar"]
  3. 构建 Docker 镜像:
    打开终端,进入项目根目录,运行以下命令来构建 Docker 镜像:

    1
    docker build -t your-app-name .
  4. 运行 Docker 容器:
    构建成功后,可以使用以下命令运行 Docker 容器:

    1
    docker run -p 8080:8080 your-app-name
  5. 访问应用:
    在浏览器中访问 http://localhost:8080,应该能够看到 Spring Boot 应用的响应。

请根据你的实际项目需求进行相应的配置和优化。

记得替换上述示例中的 your-app-nameyour-app.jar 为你的实际应用名称和 JAR 文件名。在实际项目中,可能还需要考虑数据库、日志等更复杂的情况。


Dockerfile 命令
https://blog.dekun.wang/blog/5ee55859.html
作者
Wang Dekun
发布于
2023-08-11 13:07 星期五
更新于
2023-08-11 13:20 星期五
许可协议