簡體   English   中英

Docker撰寫:

[英]Docker compose:

例如,這是我的項目結構:

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后端無法啟動服務hq后端:無法鏈接到未運行的容器:/ 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時,我只是遇到了這個問題。

請告訴我這個問題。

從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/

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM