我的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启动应用程序通信。
答案 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()
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 .