簡體   English   中英

dockerized postgres 和 dockerized Spring boot 應用程序

[英]dockerized postgres and dockerized Spring boot app

我的 application.properties 文件

server.port=8085
spring.datasource.driverClassName=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://init-postgres:5432/dbname
spring.datasource.username=username
spring.datasource.password=password

spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

對於 dockerizing postgres 我正在使用命令

docker run -d -p 5432:5432 --name init-postgres -e POSTGRES_DB=dbname -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password postgres

但它給出了java.net.UnknownHostException: init-postgres我是 Docker 的初學者並從教程中學習它。 到 dockerized Postgresql 和 Spring 啟動應用程序通信。

如果您需要在沒有 docker-compose 的情況下對它們進行 dockerize

應用程序配置文件

spring.datasource.url=jdbc:postgresql://init-postgres:5432/dbname

  1. 創建網絡

docker network create mynet

  1. 使用創建的網絡運行 postgres 容器

docker run --net mynet --name init-postgres -d -e POSTGRES_DB=dbname -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -p 5432:5432 postgres

  1. 創建jar存檔
mvn clean
mvn compile
mvn package 
  1. 創建 dockerfile
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/<HERE_IS_NAME_OF_YOUR_JAR_FILE>.jar
COPY ${JAR_FILE} myapp.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar" , "/myapp.jar"]
  1. 構建spring boot鏡像myapp

docker build -t myapp .

  1. 運行 spring boot 容器

docker run --name myapp-container --net mynet -p 8080:8080 myapp

如果您的應用程序在沒有 docker 的主機上運行,​​並且您的數據庫位於 docker 容器中,則需要更改以下行:

spring.datasource.url=jdbc:postgresql://init-postgres:5432/dbname

spring.datasource.url=jdbc:postgresql://localhost:5432/dbname

相反,如果應用程序和數據庫都在 docker 上運行,您需要使用 docker 容器名稱進行引用,正如您在上面發布的代碼段中所述。

我建議使用docker-compose ,它是一個方便的工具,可以減輕部署的困難,並且在開發時也很有用,因為它可以輕松啟動和關閉應用程序。 docker 官方網站上,有一個很好的介紹工具的例子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM