【问题标题】:Connecting two a database in a another container with docker-compose使用 docker-compose 在另一个容器中连接两个数据库
【发布时间】:2020-03-06 13:03:03
【问题描述】:

我正在尝试设置一个 docker-compose,其中一个容器具有数据库,另一个容器具有应用程序。据我所知,我需要将两个容器与网络连接起来。

version: "3"
services:
  psqldb:
    image: "postgres"
    container_name: "psqldb"
    environment:
      - POSTGRES_USER=usr
      - POSTGRES_PASSWORD=pwd
      - POSTGRES_DB=mydb
    ports:
      - "5432:5432"
    expose:
      - "5432"
    volumes:
      - $HOME/docker/volumes/postgres/:/var/lib/postgresql/data
    networks:
      - backend
  sbapp:
    image: "dsb"
    container_name: "dsb-cont"
    ports:
      - "8080:8080"
    expose:
      - "8080"
    depends_on:
      - psqldb
    networks:
      - backend

networks:
  backend:

我还尝试将网络驱动程序设置为bridge(这并没有改变最终结果)

networks:
  backend:
    driver: bridge

我正在使用以下网址连接数据库

spring.datasource.url=jdbc:postgresql://psqldb:5432/mydb

我也尝试暴露端口并使用localhost进行连接

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

我也尝试使用端口 5433 而不是 5432。

无论我使用什么组合,我都收到以下错误

Connection to psqldb:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

在我的应用容器中。但是,我的数据库容器仍然启动,我可以使用 url 从主机很好地连接到它

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

如果我完全从 docker-compose.yml 中删除 psqldb 容器(并使用后一个连接 url),我也可以从主机连接到数据库。

如果有什么不同,我使用的是 Spring 使用 Dockerfile 启动应用程序

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar", "app.jar"]

我正在使用命令构建图像

docker build --build-arg JAR_FILE=target/*.jar -t dsb .

我在两个容器设置中缺少什么?

【问题讨论】:

    标签: postgresql spring-boot docker-compose


    【解决方案1】:

    我遇到的问题是 docker depends_on 仅按定义的顺序启动容器,而不是等待它们真正准备好。

    https://docs.docker.com/compose/startup-order/

    【讨论】:

      猜你喜欢
      • 2016-06-15
      • 2021-01-26
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      相关资源
      最近更新 更多