这是我的docker-compose
version: '2'
services:
weather-cities:
build:
context: .
volumes:
- .:/usr/app
- /usr/app/node_modules/
ports:
- "8080:8080"
# Set environment variables from this file
# env_file:
# - .env
# Overwrite any env var defined in .env file (if required)
environment:
- DB_NAME=test
- DB_PORT=5432
- DB_HOST=postgres
- DB_USERNAME=test
- DB_PASSWORD=challenge
- APP_PORT=8080
links:
- postgres
postgres:
image: "postgres:9.4.11"
ports:
- "5432:5432"
environment:
- POSTGRES_USER=test
- POSTGRES_PASSWORD=challenge
运行此迁移脚本
"db:migrate": "./node_modules/.bin/sequelize --migrations-path=migrations --models-path=models --config=config/config.js db:migrate"
这是我的Dockerfile
FROM node:8.10.0
WORKDIR /usr/app
COPY package.json .
RUN npm install --quiet
COPY . .
RUN npm run db:migrate
RUN npm run db:seed
EXPOSE 8080
CMD ["npm", "start"]
输出:
加载了配置文件"config/config.js“。使用环境“开发”。
错误: connect ECONNREFUSED 127.0.0.1:5432
config.js
let config = {
"development": {
"username": process.env.DB_USERNAME,
"password": process.env.DB_PASSWORD,
"database": process.env.DB_NAME,
"host": process.env.DB_HOST,
"dialect": "postgres",
"port": process.env.DB_PORT
}
};
module.exports = config;
发布于 2019-03-27 06:37:41
当您运行docker-compose up
时,幕后会发生两件事:
在build
阶段,您的容器还没有启动并运行。
这就是导致实际问题的原因,在node
构建中,您希望postgress
容器启动、运行并侦听端口5432
,但这永远不会是真的,因为在构建所有映像之前,容器启动阶段不会发生。
不过,您正在寻求实现的目标可以通过entrypoint
来实现。
https://stackoverflow.com/questions/55366676
复制相似问题