打jar包
使用maven:
<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文件
# 基礎鏡像使用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 作為基礎鏡像
# 對應dockerfile中 FROM openjdk:17-jdk
docker pull openjdk:17-jdk
eureka-server 生成鏡像
docker build -t eureka-server:0 .
運行鏡像
docker run --name eureka-server -d --restart always -p 9007:8800 eureka-server:0
訪問 eureka頁面
http://10.0.1.129:9007/
添加環境變量
1.通過 Dockerfile 定義環境變量
在構建鏡像時使用 ENV 指令設置 默認環境變量(適合不敏感配置):
ENV SPRING_PROFILES_ACTIVE=prod \APP_PORT=8080
2.通過 docker run 命令行傳遞
運行容器時通過 -e 動態覆蓋環境變量:
docker run -d \-e "SPRING_PROFILES_ACTIVE=prod" \-e "DB_URL=jdbc:mysql://db-host:3306/mydb" \-p 8080:8080 \my-spring-app