【发布时间】:2019-01-05 01:28:40
【问题描述】:
我在我的 docker 映像中使用 sequelize 初始化数据库时遇到问题。由于 unix 套接字,我不断收到连接被拒绝的错误,因为我无法使用 localhost。
我读过how to create 一个有脚本的,但我的项目使用了sequelize。
我也尝试过使用socket connections 和socat 的各种策略
psql 命令将在我的 init 脚本中成功,但 yarn 命令或 sequelize 命令以
ERROR: connect ECONNREFUSED 127.0.0.1:5432
我的最终初始化脚本如下所示:
socat TCP-LISTEN:5432 UNIX-CONNECT:/var/run/postgresql/.s.PGSQL.5432 &
yarn --cwd /root db-create
create 命令只是调用dotenv sequelize db:create
我不确定从这里去哪里。看起来这应该是一件简单的事情。我只是错过了一些明显的东西吗?
-编辑
值得指出的是,这在安装 postgres 时运行良好。当我们在数据库中启动 postgres 并在之后运行 yarn 命令时,它工作正常。这里唯一的区别是我们试图在容器启动时创建和迁移数据库,因此这不是手动过程。
【问题讨论】:
-
什么是
TCP-LISTEN?这是否对应于127.0.0.1? -
使用 tcp->socket 是 socat 命令的一部分
-
用
0.0.0.0代替TCP-LISTEN -
socat 的工作原理不是这样吗?
-
你对 socat 的看法是对的。你有续集的配置吗? github.com/sequelize/cli/blob/master/docs/README.md
标签: postgresql docker sequelize.js