2017-03-05 171 views
0

例如,這裏是我的項目結構:碼頭工人組成:

project 
    | 
    +-- docker-compose.yml 
    |  
    +-- hq-backend 
    | +-- Dockerfile 
    | +-- .env.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。我總是在年底達到此異常:

ERROR: for hq-backend Cannot start service hq-backend: Cannot link to a non running container: /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 

此問題僅與蒙戈服務,而不是數據庫服務。之後,如果我試圖再次運行docker-compose up,沒有發現錯誤,但我的hq-backend會拋出異常,因爲無法連接到mongo db。換句話說,我從零開始重建hq-backend時遇到了這個問題。

請告訴我這個問題。

回答

1

從docker-compose文件中刪除tty和stdin_open選項。 我想,這是與docker-compose如何處理容器有關。 如果你想執行蒙戈容器內的命令然後撰寫了後只需登錄到其使用: 泊塢窗EXEC -t -i HQ-蒙戈/斌/慶典

順便說一句 - 你可以考慮使用泊塢窗,撰寫版本2或3和depends_on而不是鏈接 https://docs.docker.com/compose/compose-file/compose-file-v2/

0

嘗試將depends_on添加到hq-backend與鏈接相同的級別。例如:

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