【问题标题】:Port issue in compose file撰写文件中的端口问题
【发布时间】:2020-09-24 13:11:55
【问题描述】:

我在 docker compose 中遇到端口问题。

我的撰写文件是:

version: '3.1'

services:
  db:
    hostname: postgres
    build:
      context: .
      dockerfile: Dockerfile.postgres
    restart: always
    ports:
      - "5432:5432"
  test:
    build:
      context: ../..
      dockerfile: Dockerfile.test
    environment:
      DB_URL: "jdbc:postgresql://postgres:5432/postgres?user=postgres&password=postgres"
    depends_on:
      - postgres

我用于测试的 docker 文件是

FROM openjdk:8

RUN \
  curl -L -o sbt-1.2.8.deb http://dl.bintray.com/sbt/debian/sbt-1.2.8.deb && \
  dpkg -i sbt-1.2.8.deb && \
  rm sbt-1.2.8.deb && \
  apt-get update && \
  apt-get install sbt && \
  sbt sbtVersion

ENV WORK_DIR="/test"

USER root

COPY . ${WORK_DIR}/

RUN cd ${WORK_DIR} && \
    sbt test

在运行它时,我得到:

org.postgresql.util.PSQLException:连接到 localhost:5432 被拒绝。检查主机名和端口是否正确,以及 postmaster 是否接受 TCP/IP 连接。

TEST_DB_URL 是 application.conf 中的一个环境变量。

我正在运行单个命令:

docker compose -f docker-compose.yml up db

它工作正常并且 docker ps 显示

 0.0.0.0:5432->5432/tcp 

但是当我运行 docker compose -f docker-compose.yml up test 时,我会下载依赖项并编译代码并拒绝连接到 localhost:5432。

【问题讨论】:

  • 您的错误消息的主机名与TEST_DB_URL 环境变量设置不同(postgreslocalhost)。你能展示使用这个变量的代码或配置吗?你能包括建立数据库连接的实际代码吗?
  • 添加了 sn-p。 @大卫迷宫

标签: scala docker docker-compose sbt


【解决方案1】:

看起来这与连接数据库无关,而是配置问题。它使用application.conf 中的默认值,而不是使用环境中的覆盖。您可以尝试通过简单地在 Scala 中打印配置并找出 ConfigFactory 不获取环境变量的原因来缩小范围。

【讨论】:

  • 我已经尝试过明确地传递 postgres 运行的 URL,然后我也遇到了连接问题。
猜你喜欢
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
  • 2011-02-26
  • 2022-11-01
  • 2019-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多