【发布时间】:2018-11-03 10:18:26
【问题描述】:
我正在尝试 dockerize 一个 NodeJS / PostgreSQL 应用程序,但我无法运行 knex 迁移,我收到以下错误:
错误:连接 ECONNREFUSED 172.18.0.2:15432
在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1161:14)
这是我的 docker-compose.yml:
version: "3"
services:
app:
build: .
depends_on:
- db
links:
- db
ports:
- "3000:3000"
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: users-microservice
DB_HOST: db
db:
image: postgres:10.4-alpine
expose:
- "5432"
ports:
- "15432:5432"
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
POSTGRES_DB: users-microservice
'app' 服务的 Dockerfile :
FROM node:10.1-alpine
EXPOSE 3000 9229 15432
COPY . /home/app
WORKDIR /home/app
RUN npm install
RUN npm install -g knex
CMD ./scripts/start.sh
在 start.sh 中,以下命令有效:
until PGPASSWORD=$POSTGRES_PASSWORD psql -h "$DB_HOST" -U "$POSTGRES_USER" -c '\d'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - executing command"
所以我可以通过 CLI 连接到 postgres,但 knex 不能,这是为什么呢?我有什么问题吗,我是 Docker 新手?
最好的问候,
【问题讨论】:
标签: postgresql docker docker-compose knex.js