我的数据库URL设置为
DATABASE_URL = postgres:// DBUser:DBPass @ locahost:5432 / DatabaseName
我的docker文件如下
version: "3"
services:
redis:
image: redis:alpine
container_name: redis
ports:
- "6379:6379"
db_command:
image: postgres:alpine
container_name: pgDB
environment:
POSTGRES_USER: DBUser
POSTGRES_PASSWORD: DBPass
POSTGRES_DB: DatabaseName
volumes:
- "./.docker_pgdata:/var/lib/postgresql/data"
ports:
- "5432:5432"
当我尝试运行命令sequelize db:migrate
时会引发错误
我可以通过命令行连接到postgres docker实例,这不是问题。
ERROR: connect ECONNREFUSED 127.0.0.1:5432
我不了解将主机从127.0.0.1更改为localhost无效。另外,它以前运行过,现在却不起作用,这令我感到困惑。
我去检查了解决方案,但是没有一个对我有用。
答案 0 :(得分:0)
如果要从容器A访问容器B,则不能使用localhost
,因为容器B不在容器A内部运行。它在容器网络中。
尝试使用depends_on
指定容器依赖项:
services:
redis:
...<existing config>
depends_on:
- pgDB
然后redis容器可以访问数据库容器。使用容器B 0.0.0.0:5432
的地址进行连接。
更好的是,只需使用您要访问的容器的名称(pgDB
)
侧面说明:最佳做法是不要更改容器名称。只要允许他们使用他们的服务名称即可。
答案 1 :(得分:0)
当我尝试运行命令sequelize db:migrate时会引发错误
您从哪里尝试运行命令? redis容器?您当地的人?
如果来自redis容器,则可以使用服务名称:db_command
网址:DATABASE_URL = postgres:// DBUser:DBPass @ db_command:5432 / DatabaseName