docker編寫java的jar完整步驟記錄
all-docker/
├── docker-compose.yml
├── a/
│ ├── Dockerfile
│ └── a.jar
└── b/
├── Dockerfile
└── b.jar
生成Docker打包部署文件
項(xiàng)目結(jié)構(gòu)說(shuō)明
項(xiàng)目根目錄包含docker-compose.yml和兩個(gè)子目錄a/、b/,分別存放服務(wù)A和服務(wù)B的代碼及Docker配置。目標(biāo)是通過(guò)Docker Compose統(tǒng)一構(gòu)建和部署這兩個(gè)服務(wù)。
配置服務(wù)A的Dockerfile (a/Dockerfile)
# 使用官方Java基礎(chǔ)鏡像 FROM openjdk:17-jdk-slim # 復(fù)制JAR文件到容器 COPY a.jar /app/a.jar # 指定啟動(dòng)命令 ENTRYPOINT ["java", "-jar", "/app/a.jar"]
配置服務(wù)B的Dockerfile (b/Dockerfile)
# 使用官方Java基礎(chǔ)鏡像 FROM openjdk:17-jdk-slim # 復(fù)制JAR文件到容器 COPY b.jar /app/b.jar # 指定啟動(dòng)命令 ENTRYPOINT ["java", "-jar", "/app/b.jar"]
編寫docker-compose.yml
version: '3.8'
services:
service-a:
build: ./a # 指向服務(wù)A的Dockerfile目錄
container_name: service-a
ports:
- "8080:8080" # 假設(shè)服務(wù)A暴露8080端口
restart: unless-stopped
service-b:
build: ./b # 指向服務(wù)B的Dockerfile目錄
container_name: service-b
ports:
- "8081:8081" # 假設(shè)服務(wù)B暴露8081端口
restart: unless-stopped
操作步驟
構(gòu)建鏡像
在項(xiàng)目根目錄執(zhí)行以下命令,構(gòu)建所有服務(wù)的Docker鏡像:docker-compose build
啟動(dòng)服務(wù)
啟動(dòng)所有容器并運(yùn)行服務(wù):docker-compose up -d
驗(yàn)證服務(wù)
檢查容器狀態(tài):docker-compose ps
訪問(wèn)服務(wù)A的接口(如
http://localhost:8080)和服務(wù)B的接口(如http://localhost:8081)。
注意事項(xiàng)
端口沖突
確保docker-compose.yml中定義的端口與本地或其他服務(wù)無(wú)沖突。環(huán)境變量
如需動(dòng)態(tài)配置,可在docker-compose.yml中添加environment字段:service-a: environment: - SPRING_PROFILES_ACTIVE=prod日志查看
調(diào)試時(shí)可通過(guò)以下命令查看實(shí)時(shí)日志:docker-compose logs -f service-a
生成Docker打包部署文件
項(xiàng)目結(jié)構(gòu)說(shuō)明
項(xiàng)目根目錄包含docker-compose.yml和兩個(gè)子目錄a/、b/,分別存放服務(wù)A和服務(wù)B的代碼及Docker配置。目標(biāo)是通過(guò)Docker Compose統(tǒng)一構(gòu)建和部署這兩個(gè)服務(wù)。
配置服務(wù)A的Dockerfile (a/Dockerfile)
# 使用官方Java基礎(chǔ)鏡像 FROM openjdk:17-jdk-slim # 復(fù)制JAR文件到容器 COPY a.jar /app/a.jar # 指定啟動(dòng)命令 ENTRYPOINT ["java", "-jar", "/app/a.jar"]
配置服務(wù)B的Dockerfile (b/Dockerfile)
# 使用官方Java基礎(chǔ)鏡像 FROM openjdk:17-jdk-slim # 復(fù)制JAR文件到容器 COPY b.jar /app/b.jar # 指定啟動(dòng)命令 ENTRYPOINT ["java", "-jar", "/app/b.jar"]
編寫docker-compose.yml
version: '3.8'
services:
service-a:
build: ./a # 指向服務(wù)A的Dockerfile目錄
container_name: service-a
ports:
- "8080:8080" # 假設(shè)服務(wù)A暴露8080端口
restart: unless-stopped
service-b:
build: ./b # 指向服務(wù)B的Dockerfile目錄
container_name: service-b
ports:
- "8081:8081" # 假設(shè)服務(wù)B暴露8081端口
restart: unless-stopped
操作步驟
構(gòu)建鏡像
在項(xiàng)目根目錄執(zhí)行以下命令,構(gòu)建所有服務(wù)的Docker鏡像:docker-compose build
啟動(dòng)服務(wù)
啟動(dòng)所有容器并運(yùn)行服務(wù):docker-compose up -d
驗(yàn)證服務(wù)
檢查容器狀態(tài):docker-compose ps
訪問(wèn)服務(wù)A的接口(如
http://localhost:8080)和服務(wù)B的接口(如http://localhost:8081)。
注意事項(xiàng)
端口沖突
確保docker-compose.yml中定義的端口與本地或其他服務(wù)無(wú)沖突。環(huán)境變量
如需動(dòng)態(tài)配置,可在docker-compose.yml中添加environment字段:service-a: environment: - SPRING_PROFILES_ACTIVE=prod日志查看
調(diào)試時(shí)可通過(guò)以下命令查看實(shí)時(shí)日志:docker-compose logs -f service-a
總結(jié)
到此這篇關(guān)于docker編寫java的jar的文章就介紹到這了,更多相關(guān)docker編寫java的jar內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)示例
spring支持多種定時(shí)任務(wù)的實(shí)現(xiàn)。我們來(lái)介紹下使用spring的定時(shí)器和使用quartz定時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04
springboot驗(yàn)證碼生成以及驗(yàn)證功能舉例詳解
登錄注冊(cè)是大部分系統(tǒng)需要實(shí)現(xiàn)的基本功能,同時(shí)也會(huì)對(duì)登錄驗(yàn)證增加需求,下面這篇文章主要給大家介紹了關(guān)于springboot驗(yàn)證碼生成以及驗(yàn)證功能的相關(guān)資料,需要的朋友可以參考下2023-04-04
為何HashSet中使用PRESENT而不是null作為value
這篇文章主要介紹了為何HashSet中使用PRESENT而不是null作為value,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
JAVA熔斷和降級(jí)真實(shí)關(guān)系的圖文詳解
這篇文章主要介紹了Java熔斷和降級(jí)的關(guān)系,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
Java map 優(yōu)雅的元素遍歷方式說(shuō)明
這篇文章主要介紹了Java map 優(yōu)雅的元素遍歷方式說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
詳解如何使用java實(shí)現(xiàn)Open Addressing
這篇文章主要介紹了詳解如何使用java實(shí)現(xiàn)Open Addressing,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
SpringAI?Agent開發(fā)秘籍如何讓javaer也可以用上Agent?Skills
文章介紹了如何使用SpringA和Skills構(gòu)建一個(gè)代碼評(píng)審應(yīng)用,通過(guò)實(shí)戰(zhàn)示例展示如何利用SpringAI和大模型實(shí)現(xiàn)零配置的代碼評(píng)審功能,感興趣的朋友跟隨小編一起看看吧2026-04-04
Java Kafka消費(fèi)者實(shí)現(xiàn)過(guò)程
Kafka消費(fèi)者通過(guò)KafkaConsumer類實(shí)現(xiàn),核心機(jī)制包括偏移量管理、消費(fèi)者組協(xié)調(diào)、批量拉取消息及多線程處理,手動(dòng)提交offset確保數(shù)據(jù)可靠性,自動(dòng)提交則依賴框架,本文給大家介紹Java Kafka消費(fèi)者實(shí)現(xiàn)過(guò)程,感興趣的朋友一起看看吧2025-08-08

