docker部署springboot(eureka server)项目

打jar包

使用maven:

bash 复制代码
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>17</source>
                    <target>17</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

打开idea右侧的 Maven 工具窗口(View → Tool Windows → Maven)双击 package 目标

生成的jar包:

Dockerfile文件

bash 复制代码
# 基础镜像使用java
# Docker 首先检查本地是否已存在指定的镜像(包括名称和标签):
# 如果存在,则直接使用本地镜像。
# 若本地没有镜像,Docker 会尝试从配置的镜像仓库拉取(默认是 Docker Hub)
FROM openjdk:17-jdk
# 作者
LABEL maintainer="zhw"
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD eureka-server-0.0.1-SNAPSHOT.jar eureka-server.jar
# 运行jar包
RUN bash -c 'touch /eureka-server.jar'
ENTRYPOINT ["java","-Duser.timezone=GMT+8","-Djava.security.egd=file:/dev/./urandom","-jar","/eureka-server.jar"]

上传Dockerfile jar包至服务器

拉取open-jdk 17 作为基础镜像

bash 复制代码
# 对应dockerfile中 FROM openjdk:17-jdk
docker pull openjdk:17-jdk

eureka-server 生成镜像

bash 复制代码
docker build -t eureka-server:0 .


运行镜像

bash 复制代码
docker run --name eureka-server  -d --restart always -p 9007:8800 eureka-server:0

访问 eureka页面

http://10.0.1.129:9007/

添加环境变量

1.通过 Dockerfile 定义环境变量

在构建镜像时使用 ENV 指令设置 默认环境变量(适合不敏感配置):

bash 复制代码
ENV SPRING_PROFILES_ACTIVE=prod \
    APP_PORT=8080

2.通过 docker run 命令行传递

运行容器时通过 -e 动态覆盖环境变量:

bash 复制代码
docker run -d \
  -e "SPRING_PROFILES_ACTIVE=prod" \
  -e "DB_URL=jdbc:mysql://db-host:3306/mydb" \
  -p 8080:8080 \
  my-spring-app

设置JVM参数

1.硬编码

Dockerfile

bash 复制代码
# 创建堆转储目录并设置权限
RUN mkdir /dumps && chmod 777 /dumps

ENTRYPOINT ["java", \
  "-Duser.timezone=GMT+8", \
  "-XX:+HeapDumpOnOutOfMemoryError", \
  "-XX:HeapDumpPath=/dumps", \
  "-Djava.security.egd=file:/dev/./urandom", \
  "-jar", "/eureka-server.jar"]

运行时挂载宿主机目录以持久化转储文件

bash 复制代码
docker run -v /host/dumps:/dumps your-image

2.结合环境变量

Dockerfile

bash 复制代码
# 创建堆转储目录并设置权限
RUN mkdir /dumps && chmod 777 /dumps
# 定义默认的 JVM 参数(可被运行时覆盖)
ENV JAVA_OPTS="-Duser.timezone=GMT+08:00 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dumps -Djava.security.egd=file:/dev/./urandom"
# 使用 Shell 形式的 ENTRYPOINT 以解析环境变量
ENTRYPOINT java $JAVA_OPTS -jar /eureka-server.jar

运行时覆盖参数

bash 复制代码
docker run -e JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/dumps ..." your-image
相关推荐
程序猿乐锅6 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
需要8268 小时前
分布式事务:Seata AT/TCC/SAGA 的取舍与踩坑
java·spring boot·分布式·spring·spring cloud
m0_587383009 小时前
深圳24小时自助健身房解决方案实战:从系统架构到部署指南
java·人工智能·spring boot·spring·系统架构·需求分析
无序的浪9 小时前
测试博客-基于微服务的在线判题系统
java·spring cloud·docker·微服务·测试·在线判题
小马哥程序开发10 小时前
[点赞收藏免费领取 · 项目源码]57105基于Spring Boot的充电桩管理系统的设计与实现
java·spring boot·源码·课程设计·毕设·大作业·课设
卓怡学长13 小时前
w202springboot基于B_S架构的图书信息管理系统
java·spring boot·spring·intellij-idea
走到天涯海角13 小时前
用springBoot写几个简单的接口
java·spring boot·intellij-idea
溜达的大象13 小时前
极空间部署Traggo时间追踪工具:Docker安装、标签管理与cpolar远程访问
运维·docker·容器
xcl092514 小时前
西安同城货运系统源码开发实战 核心功能实现与部署全指南
java·spring boot
ym hyd 11114 小时前
慢性病精细化管理平台源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设