首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >docker环境变量显示未定义

docker环境变量显示未定义
EN

Stack Overflow用户
提问于 2019-03-27 05:46:53
回答 1查看 1.9K关注 0票数 1

这是我的docker-compose

代码语言:javascript
复制
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

运行此迁移脚本

代码语言:javascript
复制
"db:migrate": "./node_modules/.bin/sequelize --migrations-path=migrations --models-path=models --config=config/config.js db:migrate"

这是我的Dockerfile

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2019-03-27 06:37:41

当您运行docker-compose up时,幕后会发生两件事:

build阶段,您的容器还没有启动并运行。

这就是导致实际问题的原因,在node构建中,您希望postgress容器启动、运行并侦听端口5432,但这永远不会是真的,因为在构建所有映像之前,容器启动阶段不会发生。

不过,您正在寻求实现的目标可以通过entrypoint来实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55366676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档