![](/img/trans.png)
[英]How to connect dockerized spring boot app to dockerized postgres
[英]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
docker network create mynet
docker run --net mynet --name init-postgres -d -e POSTGRES_DB=dbname -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -p 5432:5432 postgres
mvn clean
mvn compile
mvn package
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"]
docker build -t myapp .
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.