Openshift Spring Boot Docker Image& Postgres Pod

时间:2018-04-05 18:40:18

标签: postgresql docker spring-boot openshift

我有一个spring boot web API(简单的数据库连接),我想把它放在openshift上。我可以使用docker在本地生成映像,然后使用oc port-forward将postgres pod连接到我的localhost:3432,导致我的应用程序属性如下:

spring.datasource.url=jdbc:postgresql://localhost:5432/{dbname}
spring.datasource.username={dbuser}
spring.datasource.password={dbpassword}

其中的名称&密码被适当替换。实际上,这会将我的本地构建连接到远程数据库。

我的问题是,当将docker容器推送到OSE时,如何将这些连接属性设置为将远程应用程序连接到远程数据库?我最初以为我会用一条路由暴露Postgres服务并将数据源url设置为;但是,在运行我的docker镜像时,我仍然收到连接被拒绝。我的dockerfile很简单,如下所示:

FROM openjdk:8-jre-alpine
COPY ./zeus-service-api/target/zeus-service-api-1.0-SNAPSHOT-exec.jar /usr/src/zeus-service/
WORKDIR /usr/src/zeus-service
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "zeus-service-api-1.0-SNAPSHOT-exec.jar"]

1 个答案:

答案 0 :(得分:0)

将springboot应用程序部署到OpenShift而不是本地时,可以使用环境变量或连接信息。要查找此信息(env变量),请单击progres部署,然后单击环境,它将显示要使用的环境变量。我看到很多开发人员在本地设置这些环境变量,因此当他们将部署移动到平台时,他们不必更改代码。

查找所有这些信息的另一种方法是通过Web控制台打开终端会话到postgres pod并运行以下命令:

h-4.2$ env |grep POSTGRES
POSTGRESQL_PORT_5432_TCP_ADDR=172.30.248.18
POSTGRESQL_PORT=tcp://172.30.248.18:5432
POSTGRESQL_SERVICE_PORT_POSTGRESQL=5432
POSTGRESQL_PORT_5432_TCP=tcp://172.30.248.18:5432
POSTGRESQL_SERVICE_HOST=172.30.248.18
POSTGRESQL_DATABASE=sampledb
POSTGRESQL_PASSWORD=xcUmSHIJudu421v0
POSTGRESQL_PORT_5432_TCP_PORT=5432
POSTGRESQL_VERSION=9.6
POSTGRESQL_PREV_VERSION=9.5
POSTGRESQL_SERVICE_PORT=5432
POSTGRESQL_USER=user455
POSTGRESQL_PORT_5432_TCP_PROTO=tcp
sh-4.2$