我能够成功将servicebot服务连接到在docker容器中运行的postgresql,但我想将servicebot连接到实例中运行的postgresql,即不在docker容器中。
我已经成功安装了postgresql。我已经在docker-compose.yml中将与postgrsql相关的环境变量设置为以下行。如何使docker-compose.yml连接到
docker-compose.yml
version: '2'
services:
servicebot:
image: servicebot/servicebot
environment:
POSTGRES_DB_PORT : "5432"
POSTGRES_DB_HOST : "localhost"
POSTGRES_DB_USER : "servicebot_user"
POSTGRES_DB_PASSWORD : "servicebot_pass"
POSTGRES_DB_NAME : "servicebot_user"
PORT : "3000"
volumes:
- upload-data:/usr/src/app/uploads
- environment-file:/usr/src/app/env
- db-data:/var/lib/postgresql/data
# links:
# - db
ports:
- "80:3000"
- "443:3001"
command: ["sh", "-c", "node /usr/src/app/bin/wait-for-it.js db 5432 && npm run-script start"]
volumes:
upload-data:
environment-file:
db-data:
以前,我有一个名为db的postgresql服务,并通过链接连接到它,如您所见,我已经对此进行了注释。
我对Postgresql非常陌生,无法找出正确的方法。我尝试了几种方法,但没有成功。
尝试过:
在实例中向IP添加extra_hosts
添加host.docker.internal
而不是localhost
错误日志:
在
docker logs servicename
上不显示任何内容。服务 在29 30秒后停止。
答案 0 :(得分:1)
您的问题是POSTGRES_DB_HOST
指向“本地主机”,因为“本地主机”将是运行当前服务的容器。
如果您想连接到在主机(localhost)中运行的postgre,我想您可以使用此特殊值host.docker.internal
。
答案 1 :(得分:0)
请注意,如果您在 MAC (macOS) 上运行 Docker
,则需要使用:docker.for.mac.host.internal
。
答案 2 :(得分:0)
我认为您应该将有关 postgresql 的更多信息添加到 docker-compose.yml 文件中,如下所示:
version: '2'
services:
db:
image: postgres:13
environment:
- POSTGRES_PASSWORD=servicebot_pass
- POSTGRES_USER=servicebot_user
- POSTGRES_DB=postgres
restart: always
volumes:
- ./postgresql:/var/lib/postgresql/data
servicebot:
image: servicebot/servicebot
depends_on:
- db
environment:
POSTGRES_DB_PORT : "5432"
POSTGRES_DB_HOST : "localhost"
POSTGRES_DB_USER : "servicebot_user"
POSTGRES_DB_PASSWORD : "servicebot_pass"
POSTGRES_DB_NAME : "servicebot_user"
PORT : "3000"
volumes:
- upload-data:/usr/src/app/uploads
- environment-file:/usr/src/app/env
- db-data:/var/lib/postgresql/data
# links:
# - db
ports:
- "80:3000"
- "443:3001"
command: ["sh", "-c", "node /usr/src/app/bin/wait-for-it.js db 5432 && npm run-script start"]
volumes:
upload-data:
environment-file:
db-data: