繁体   English   中英

如何在 Digital Ocean 上的同一个 Droplet 中使用 postgresql 和 spring boot 应用程序

[英]How to use postgresql and spring boot app in same droplet on Digital Ocean

我已经安装了一个 postgres docker 容器和 spring boot 应用程序作为另一个 docker 容器。 但是 Spring Boot 应用程序无法连接到数据库。

这是我的数据库连接代码:

# name is used in quartz scheduling initial table creation in db
spring.datasource.name = postgresql
# postgresql, mysql, all, h2 etc, default is all
# spring.datasource.platform = postgresql
spring.datasource.url = jdbc:postgresql://<public_ip_address>:5432/production_db
spring.datasource.username = postgres
spring.datasource.password = 1234

请注意,Digital Ocean 也有私有 IP 地址。 我也尝试过。 即使使用本地主机和 127.0.0.1

我按如下方式运行 postgres:

docker run -d --rm -p 5432:5432 --name pg-docker -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=1234 -v $HOME/docker/volumes/postgres/:/var/lib/postgresql/data postgres:11.0
psql -U postgres -h localhost -c "CREATE DATABASE production_db"

我的 Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY build/libs/*.jar app.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/app.jar"]

以下是 docker-compose.yml 文件。

version: '3'
services:
  postgresql:
    image: "postgres:11.0"
    container_name: "postgresql"
    ports:
      - "5432:5432"
    volumes:
      - $HOME/docker/volumes/postgres/:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=1234

  api:
    build: .
    container_name: "api"
    ports:
      - "8081:8081"
    depends_on:
      - postgresql

当我尝试 docker-compose up --build 时,它也显示连接错误。 数据源行: spring.datasource.url = jdbc:postgresql://postgresql:5432/production_db

请使用 docker compose 同时部署应用程序和数据库,然后使用 docker compose 服务名称而不是 public_ip_address。

同样,我在此示例应用程序中使用了 mysql: https : //github.com/jinternals/micrometer

  datasource:
    url: jdbc:mysql://mysql:3306/micrometer
    username: user
    password: password

在 docker 命令中使用 EXPOSE 5432 来运行 Postgres 容器。 默认情况下它不会公开端口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM