【问题标题】:Docker compose:码头工人组成:
【发布时间】:2017-03-05 11:09:01
【问题描述】:

例如,这是我的项目结构:

project
     |
     +-- docker-compose.yml
     |    
     +-- hq-backend
     |  +-- Dockerfile
     |  +-- .env.docker-compose

这是我的 docker compose 文件:

db:
  container_name: hq-db
  image: postgres:latest
  ports:
    - "5432:5432"
  environment:
    POSTGRES_USER: user_name
    POSTGRES_PASSWORD: password
    POSTGRES_DB: db_name

mongo:
  container_name: hq-mongo
  image: mongo:3.2.9
  tty: true
  stdin_open: true
  ports:
    - "27027:27027"
  volumes:
    - mongo:/data/db

hq-backend:
  env_file:
    - ../hq-backend/.env.docker_compose
  build: ../hq-backend/
  dockerfile: Dockerfile
  ports:
    - "8686:8686"
  volumes:
    - ".:/webapp"
  links:
    - db
    - mongo

当我尝试运行docker-compose up 时。我总是在最后遇到这个例外:

错误:对于 hq-backend 无法启动服务 hq-backend:无法链接到 非运行容器:/hq-mongo AS /project_hq-backend_1/mongo

这是我的环境文件:

ENV=dev
DB_HOST=db
DB_ADDRESS=db
DB_PORT=5432
POSTGRES_DB=db_name
POSTGRES_USER=username
POSTGRES_PASSWORD=password

DB_MONGO_ADDRESS=mongo
DB_MONGO_PORT=27027

这个问题只存在于 mongo 服务,而不是 db 服务。之后,如果我再次尝试运行docker-compose up,没有发现错误,但我的hq-backend 将抛出异常,因为无法连接到mongo db。换句话说,我只是在从头开始重建hq-backend 时遇到了这个问题。

请告诉我这个问题。

【问题讨论】:

    标签: mongodb docker docker-compose dockerfile


    【解决方案1】:

    从 docker-compose 文件中删除 tty 和 stdin_open 选项。 我想它弄乱了 docker-compose 处理容器的方式。 如果您想在 mongo 容器中执行命令,那么在组合之后只需使用以下命令登录它: docker exec -t -i hq-mongo /bin/bash

    顺便说一句 - 您可以考虑使用 docker-compose 版本 2 或 3 和 depends_on 而不是链接 https://docs.docker.com/compose/compose-file/compose-file-v2/

    【讨论】:

      【解决方案2】:

      尝试将depends_on 添加到与链接相同级别的 hq-backend。例如:

      depends_on:
        - mongo
        - db
      links:
        - db
        - mongo
      

      【讨论】:

        猜你喜欢
        • 2015-11-28
        • 1970-01-01
        • 2017-02-01
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 2017-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多