我在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的连接被拒绝。
答案 0 :(得分:0)
看起来这与连接数据库无关,但是是配置问题。它使用的是application.conf
中的默认值,而不是环境中的替代值。您可以尝试通过在Scala中简单地打印配置并弄清楚ConfigFactory
为什么不选择环境变量的原因来缩小范围。