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 示例
步骤
创建 Spring Boot 项目:
创建一个简单的 Spring Boot 项目,例如一个基本的 REST API 应用。编写 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"]构建 Docker 镜像:
打开终端,进入项目根目录,运行以下命令来构建 Docker 镜像:1
docker build -t your-app-name .
运行 Docker 容器:
构建成功后,可以使用以下命令运行 Docker 容器:1
docker run -p 8080:8080 your-app-name
访问应用:
在浏览器中访问http://localhost:8080
,应该能够看到 Spring Boot 应用的响应。
请根据你的实际项目需求进行相应的配置和优化。
记得替换上述示例中的 your-app-name
和 your-app.jar
为你的实际应用名称和 JAR 文件名。在实际项目中,可能还需要考虑数据库、日志等更复杂的情况。
Dockerfile 命令
https://blog.dekun.wang/blog/5ee55859.html