撰写文件中的端口问题

时间:2020-06-05 10:41:52

标签: scala docker docker-compose sbt

我在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:到本地主机的连接:5432被拒绝。检查主机名和端口是否正确以及邮局主管正在接受TCP / IP连接。

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

我正在运行各个命令:

docker compose -f docker-compose.yml升级数据库

它工作正常,并且docker ps show

 0.0.0.0:5432->5432/tcp 

但是当我运行docker compose -f docker-compose.yml up测试时,我下载依赖项并编译代码,并给我与localhost:5432的连接被拒绝。

1 个答案:

答案 0 :(得分:0)

看起来这与连接数据库无关,但是是配置问题。它使用的是application.conf中的默认值,而不是环境中的替代值。您可以尝试通过在Scala中简单地打印配置并弄清楚ConfigFactory为什么不选择环境变量的原因来缩小范围。