javascript
带有PostgreSQL的Docker Compose for Spring Boot应用程序
在此博客文章中,您將學(xué)習(xí)如何使用PostgreSQL配置Spring Boot應(yīng)用程序以與Docker Compose一起運(yùn)行。
這篇博客文章涵蓋:
- Spring Boot應(yīng)用程序Dockerfile配置,在依賴關(guān)系和資源之間進(jìn)行了清晰的分離
- 用于通過PostgreSQL運(yùn)行應(yīng)用程序的Docker Compose配置
先決條件
- 碼頭工人
- Java 13
- 終奌站
- httpie(或curl)
應(yīng)用
- 使用Spring Web , Spring Data JPA , Spring Data REST , PostgreSQL JDBC Driver依賴項(xiàng)生成基于Maven的Spring Boot應(yīng)用PostgreSQL JDBC Driver 。
可以在Github上找到本文的源代碼: https : //github.com/kolorobot/spring-boot-tc
Dockerfile
- 創(chuàng)建Dockerfile
- 基本Docker映像使用Alpine Linux:
- 不要以root身份運(yùn)行應(yīng)用程序:
- 不要將胖子容器部署到容器中,而是將依賴項(xiàng),應(yīng)用程序類和資源拆分到單獨(dú)的層中:
注意:如果您有基于Gradle的項(xiàng)目,則可以使用ARG來調(diào)整目錄: docker build --build-arg DEPENDENCY=build/dependency -t spring-boot-tc .
- 通過在java命令中指向主類和庫,在容器內(nèi)運(yùn)行應(yīng)用程序:
完整的Dockerfile :
FROM openjdk: 13 -alpine RUN addgroup -S spring && adduser -S spring -G spring USER spring:spring ARG DEPENDENCY=target/dependency COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib COPY ${DEPENDENCY}/META-INF /app/META-INF COPY ${DEPENDENCY}/BOOT-INF/classes /app ENTRYPOINT [ "java" , "-cp" ENTRYPOINT [ "-cp" , "app:app/lib/*" , "pl.codeleak.samples.springboot.tc.SpringBootTestcontainersApplication" ]Docker新手? Docker在12分鐘內(nèi)進(jìn)行了解釋: https : //www.youtube.com/watch?v = YFl2mCHdv24
Docker撰寫
- 創(chuàng)建docker-compose.yml
- 我們將提供兩項(xiàng)services : db用于PostgreSQL數(shù)據(jù)庫和app用于應(yīng)用程序
- db服務(wù)將使用公共存儲(chǔ)庫中的postgres映像,它將向主機(jī)公開端口5432 ,并將環(huán)境屬性POSTGRES_*傳遞給容器以設(shè)置數(shù)據(jù)庫名稱,用戶和密碼。
完整docker-compose.yml :
version: '3' services: db: image: "postgres" ports: - "5432:5432" environment: POSTGRES_DB: tc POSTGRES_USER: tc POSTGRES_PASSWORD: tc app: build: . ports: - "9000:8080" environment: SPRING_DATASOURCE_URL: jdbc:postgresql: //db/tc SPRING_DATASOURCE_USERNAME: tc SPRING_DATASOURCE_PASSWORD: tc depends_on: - dbDocker Compose的新手? Docker Compose在12分鐘內(nèi)進(jìn)行了解釋: https : //www.youtube.com/watch?v = Qw9zlE3t8Ko
運(yùn)行應(yīng)用程序
- 打包應(yīng)用程序
$ ./mvnw clean package
要跳過測(cè)試,請(qǐng)使用: -DskipTests=true
- 從fat-jar提取庫
$ mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
- 使用docker-compose運(yùn)行
$ docker-compose build && docker-compose up
- 驗(yàn)證應(yīng)用程序正在運(yùn)行并響應(yīng)請(qǐng)求
源代碼
可以在Github上找到本文的源代碼: https : //github.com/kolorobot/spring-boot-tc
參考文獻(xiàn)
- https://spring.io/guides/gs/spring-boot-docker/
- https://openliberty.io/blog/2018/06/29/optimizing-spring-boot-apps-for-docker.html
也可以看看
- 使用JUnit 5進(jìn)行Spring Boot測(cè)試
- macOS:(Java)開發(fā)人員必備工具
翻譯自: https://www.javacodegeeks.com/2020/03/docker-compose-for-spring-boot-application-with-postgresql.html
總結(jié)
以上是生活随笔為你收集整理的带有PostgreSQL的Docker Compose for Spring Boot应用程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行列怎么区分字母(行和列的字母)
- 下一篇: Spring Boot端口从默认更改为自