Postgresql 无法翻译主机名“;博士后;地址:名称或服务未知
我正在尝试运行一个依赖于postgresql数据库的服务,但我不知道如何将两者链接在一起/连接 我“依赖”数据库,这似乎意味着我应该能够使用服务名称作为数据库主机名(即Postgresql 无法翻译主机名“;博士后;地址:名称或服务未知,postgresql,docker,docker-compose,Postgresql,Docker,Docker Compose,我正在尝试运行一个依赖于postgresql数据库的服务,但我不知道如何将两者链接在一起/连接 我“依赖”数据库,这似乎意味着我应该能够使用服务名称作为数据库主机名(即due\u database),但每当我这样做时,我就会得到错误: 无法将主机名“到期数据库”转换为地址:名称或服务未知 这里怎么了 version: '3' services: due: restart: always build: context: ./ dockerfile: ./
due\u database
),但每当我这样做时,我就会得到错误:
无法将主机名“到期数据库”转换为地址:名称或服务未知
这里怎么了
version: '3'
services:
due:
restart: always
build:
context: ./
dockerfile: ./docker/bot/Dockerfile
command: ./due
depends_on:
- due_database
due_database:
build:
context: ./
dockerfile: ./docker/database/Dockerfile
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD="docker"
entrypoint: /entry.sh
volumes:
- ./.dueutil_db:/dueutil_data
更新:
version: '2.1'
services:
due:
restart: always
build:
context: ./
dockerfile: ./docker/bot/Dockerfile
entrypoint: /entry.sh
command: ./due
depends_on:
due_database:
condition: service_healthy
environment:
- PGPASSWORD="docker"
due_database:
image: postgres:11
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD="docker"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./.dueutil_db:/var/lib/postgresql/data
我通过将create数据库脚本移到postgres图像之外修复了第一个问题,因为这与postgres入口点冲突。
但是,我仍然不知道如何从我的应用程序容器连接到数据库
我目前正在尝试psql-U postgres-h due\U database postgres-f
,但我刚刚得到:
psql: could not connect to server: Connection refused
Is the server running on host "due_database" (172.18.0.2) and accepting
TCP/IP connections on port 5432?
注意:我确实看到了:但是这个问题似乎过时了&没有得到任何好的答案。尝试使用,我不确定,但也许它可以帮助您:
version: '3'
# ----------------
# CREATE NEW NETWORK
networks:
app:
driver: bridge
# ----------------
services:
due:
restart: always
build:
context: ./
dockerfile: ./docker/bot/Dockerfile
command: ./due
depends_on:
- due_database
# ---------------
# SPECIFY NETWORK
networks:
- app
# ---------------
due_database:
build:
context: ./
dockerfile: ./docker/database/Dockerfile
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD="docker"
entrypoint: /entry.sh
volumes:
- ./.dueutil_db:/dueutil_data
# ---------------
# SPECIFY NETWORK
networks:
- app
# ---------------
因此,我的第一个问题是尝试对PostgreSQL映像进行更改,复制一些脚本并添加自定义入口点。这会覆盖postgres启动脚本&意味着数据库无法加载
第二个问题是使用非高山postgres图像。切换到
postgres:12.1-apline
“刚刚工作”。我不确定另一张图片有什么问题 系统的哪个部分正在尝试建立连接?(特别是,它是否在docker文件中?)docker compose.yml文件看起来非常合理。请发布docker network ls和docker network inspect的输出,检查列出的网络。另外,检查due_数据库容器是否在此期间停止。