Docker部署springboot项目

打包Java项目为一个镜像

  • CentOS/Unbuntu (Linux环境)
  • JDK
  • 上传jar包(拷贝jar包过去)
  • 运行jar包(配置启动脚本)

分层,便于复用

复制代码
FROM centos:7   //镜像名:版本号(默认latest)
COPY jdk17.tar.gz /usr/local
RUN tar -zxvf /usr/local/jdk17.tar.gz -C /usr/local/ && rm /usr/local/jdk.tar.gz  //嵌套语法

ENV JAVA_HOME=/USR/LOCAL/jdk-17.0.10
ENV PATH=$JAVA_HOME/bin:$PATH

RUN mkdir -p /app
WORKDIR /app   //切换工作目录,若不存在则会自动创建,类似cd

COPY app.jar app.jar  //复制应用JAR文件到容器    A-->B中

EXPOSE 8080

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/app.jar"]
          //执行java程序	提高启动速度	 							运行一个指定的jar包 应用的jar包路径




构建镜像
docker build -t 镜像名  .(Dockerfile所在目录)
          //tag

CMD ["java", "-jar", "text.jar"] 是 Dockerfile 中的一个命令,它用来指定在容器启动时运行的默认命令。

java -jar text.jar

具体来说,它会执行以下操作:

  1. java:调用 Java 运行时环境(JRE)。
  2. -jar:这是一个 Java 命令行选项,表示运行一个 JAR(Java Archive)文件。
  3. text.jar:这是 JAR 文件的文件名,包含了 Java 应用程序的代码。

因此,这个命令的作用是在容器启动时,执行 java -jar text.jar,也就是运行 text.jar 这个 Java 可执行文件。

这个命令常用于 Docker 容器化 Java 应用,确保容器启动时自动运行指定的 Java 程序。


CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar --spring.profiles.active=$SPRING_PROFILES_ACTIVE"]

sh -c java JAVA_OPTS -jar app.jar --spring.profiles.active=SPRING_PROFILES_ACTIVE

  1. sh
    sh 是 Linux/Unix 系统中的一个命令解释器(Shell)。在 Docker 容器中使用它,可以让我们运行一条包含多个命令或环境变量的复杂命令。
  2. -c
    -csh 的一个参数,表示后面跟的是要执行的命令字符串。也就是说,sh -c 会执行后面给定的字符串内容作为命令。
  3. "java JAVA_OPTS -jar app.jar --spring.profiles.active=SPRING_PROFILES_ACTIVE"
    这是 sh 命令要执行的实际命令字符串。在这个命令中:
    • java:调用 Java 运行时环境,执行 Java 程序。
    • $JAVA_OPTS:这是一个环境变量,通常用于传递给 Java 程序的额外参数。你可以在 Docker 容器启动时通过 docker run 命令或 Dockerfile 中的 ENV 指令来定义它的值。例如,它可能包含 JVM 参数,如 -Xms512m -Xmx1024m 来设置内存大小。
    • -jar app.jar:这是标准的 Java 启动命令,表示运行 app.jar 这个 JAR 文件。
    • **--spring.profiles.active=SPRING_PROFILES_ACTIVE**:这是 Spring Boot 应用程序的配置参数,用来指定激活的 Spring 配置文件。`SPRING_PROFILES_ACTIVE也是一个环境变量,它的值会在容器启动时传入,通常用于切换不同的 Spring 配置文件(例如开发、生产等环境)。比如,如果SPRING_PROFILES_ACTIVE=prod,它会加载 application-prod.propertiesapplication-prod.yml` 之类的配置文件。

总结

这个命令的作用是:

  • 它使用 sh 启动一个命令行。
  • 然后通过 sh -c 执行一个包含 Java 启动命令的字符串,启动一个 Spring Boot 应用程序。
  • 在启动时,$JAVA_OPTS$SPRING_PROFILES_ACTIVE 环境变量会被替换成实际的值,这样可以根据环境来调整 JVM 参数和 Spring 配置文件

Docker 在尝试拉取镜像 openjdk:8-jre-alpine(官方镜像)时,无法连接到 Docker Hub(registry-1.docker.io

docker-compose追溯错误日志命令 docker-compose up --force-recreate

清除旧容器命令 docker-compose down

删除容器 docker ps -a -->docker stop test-nginx-->docker rm test-nginx

强制删除 docker rm -f test-nginx

mysql问题

所以不用在docker-compose.yml中设置MYSQL_USER:root

nginx问题

# 如果你只想重启 nginx docker-compose up -d --force-recreate recruite_nginx

mime.types****是 Nginx 用来识别不同文件类型(如 .html, .css, .js, .jpg)并自动为它们设置正确 HTTP Content-Type 响应头的配置文件,通常位于 /etc/nginx/mime.types**,你需要在 nginx.conf 中用** **include /etc/nginx/mime.types;**加载它,否则可能导致浏览器无法正确处理静态资源。

port 8081:8080 宿主机-->容器

kurbernets

相关推荐
用户8307196840822 小时前
Spring Boot 多数据源与事务管理深度解析:从原理到实践
java·spring boot
Xの哲學2 小时前
Linux IPsec 深度解析: 架构, 原理与实战指南
linux·服务器·网络·算法·边缘计算
Danileaf_Guo2 小时前
256台H100服务器算力中心业务集群部署方案
运维·服务器
掘根2 小时前
【消息队列项目】连接管理模块实现
运维·服务器
工程师华哥2 小时前
【网工技术实验】华为S5700交换机堆叠配置实验案例
服务器·网络·华为
不想画图2 小时前
Docker 容器核心配置实战:资源管控、数据卷与容器互联
运维·docker·容器
泽君学长2 小时前
CentOS 7 安装 Docker 完整教程
linux·docker·centos
记得记得就1512 小时前
Docker核心功能全解析:网络、资源控制、数据卷
网络·docker·容器
invicinble2 小时前
关于java集合--set篇
spring boot