version: '3.8'
services:
postgres:
image: postgres:14-alpine
ports:
- '5432:5432'
volumes:
- ~/apps/postgres:/var/lib/postgresql/data
env_file:
- .env
main:
container_name: tm_main
build:
context: .
env_file:
- .env
volumes:
- .:/app
- /app/node_modules
ports:
- '3000:3000'
command: npm run start:dev
depends_on:
- postgres
restart: always
volumes:
pgdata:
我有一些docker-compose.yml文件,当我运行docker时,我得到一个错误getaddrinfo ENOTFOUND postgres
。这里是.env文件
PORT=3000
DATABASE_HOST=postgres
DATABASE_USER=user
DATABASE_PASSWORD=root
DATABASE_NAME=docker_problem_db
DATABASE_PORT=5432
JWT_REFRESH_SECRET="refreshVeryHardSecret"
JWT_REFRESH_EXPIRE=86000
我使用数据库管理器Beekeeper Studio,当我尝试连接数据库与主机postgres得到同样的错误,但当改变主机名为'localhost'一切都是wokring。
我想通过主机名连接到数据库,我读了很多关于dns的问题,但我不能解决它,请帮助我。
当我尝试这个:
docker run --name acid -d -e POSTGRES_PASSWORD=postgres postgres:13
我无法使用凭据通过数据库管理器连接到数据库:
hostname=acid
user=postgres
password=postgres
但我可以这样连接:
docker exec -it acid psql -U postgres
docker inspect显示:
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "0166c61f6a5aea83490fc8c598af04e55df71f9009e336684542f922b4c042cd",
"EndpointID": "8c11cc65305666dee3786ad23453b981230adc2bd654aee4b8312fe5f54c074b",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
这里是网络列表
NETWORK ID NAME DRIVER SCOPE
0166c61f6a5a bridge bridge local
491c2f61e8d2 host host local
33ac66fb767c mynetwork bridge local
8233fba80fe2 nest-backend_default bridge local
6cc450ff3353 none null local
1条答案
按热度按时间km0tfn4u1#
你还没有定义主机名在您的组成。
您可以根据您包含的图像在
container_name
下面的services.postgres
中添加hostname: postgres
。编码愉快!