dockerized postgres和dockerized Spring boot应用

时间:2018-10-10 12:16:02

标签: spring postgresql docker spring-boot dockerfile

我的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

为了使postgres Docker化,我使用命令

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的初学者,可以从教程中学习它。进行Docker化的Postgresql和Spring启动应用程序通信。

2 个答案:

答案 0 :(得分:0)

如果您的应用程序在没有docker的主机上运行并且您的数据库位于docker容器中,则需要更改此行:

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

使用

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

相反,如果应用程序和数据库都在docker上运行,则需要使用docker容器名称进行引用,如您在发布的代码段中所述。

我建议使用docker-compose,它是一种方便的工具,可以减轻部署的麻烦,并且在开发时也很有用,因为它可以在不增加麻烦的情况下启动和关闭应用程序。 official docker website中通过示例对工具进行了很好的介绍。

答案 1 :(得分:0)

如果您需要在没有docker-compose的情况下将它们都进行docker化

application.config

onPostExecute()

  1. 创建网络

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

  1. 使用创建的网络运行postgres容器

docker network create mynet

  1. 创建 jar 存档
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. 创建dockerfile
mvn clean
mvn compile
mvn package 
  1. 构建Spring Boot映像myapp

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容器

docker build -t myapp .