簡體   English   中英

docker-compose 問題 - Celery 容器無法訪問 DB 容器

[英]docker-compose issue - Celery container not able to access DB container

Regards I have been working on a Django Application, that runs on Redis, PostgreSQL, Celery, RabbitMQ. 我寫了一個 docker-compose 來在它們各自的容器中運行所有這些服務。

這是我的 docker-compose.yml

version: "3.2"

services:
  app:
    build:
      context: .
    image: &app app
    ports:
      - "8000:8000"
    env_file: &envfile
      - env.env
    volumes:
      - ./app:/app
    environment:
      - DB_HOST=db
    command: >
      sh -c "python manage.py wait_for_db &&
            python manage.py migrate &&
            python manage.py runserver 0.0.0.0:8000"
    depends_on:
      - db
      - redis
      - broker

  redis:
    restart: always
    image: redis:latest
    ports:
      - "6379:6379"

  db:
    image: postgres:12-alpine
    environment:
      - "POSTGRES_HOST_AUTH_METHOD=trust"

  worker:
    build: .
    image: *app
    restart: always
    env_file: *envfile
    command: ["celery", "worker", "--app=worker.worker.app", "--concurrency=1", "--hostname=worker@%h", "--loglevel=INFO"]
    volumes:
      - ./app:/app
    depends_on:
      - broker
      - redis
      - db

  broker:
    image: rabbitmq:3
    env_file: *envfile
    ports:
      - 5672:5672

  flower:
    image: zoomeranalytics/flower:0.9.1-4.0.2
    restart: "no"
    env_file: *envfile
    ports:
      - "5555:5555"
    depends_on:
      - broker

我的應用程序工作得很好,容器似乎也在工作,當我將異步作業推送到工作容器時出現問題。 工作容器接手工作,並開始處理,我試圖訪問工作人員中的數據庫,但它給了我以下錯誤 -

任務 [640127f3-7769-4757-8c33-8de9052ca92c] 引發意外:OperationalError('無法連接到服務器:沒有這樣的文件或目錄\n\t服務器是否在本地運行並接受\n\t Unix 域套接字上的連接"/tmp /.s.PGSQL.5432"?\n')

我知道我的工作容器正在嘗試訪問它無法找到的數據庫,有人可以幫我通過工作容器訪問我的數據庫容器,對此非常堅持。

我嘗試了 depends_onlinks ,但似乎沒有任何效果。

明白了,感謝我的隊友。

我一通過就錯過了在工作容器中提供環境變量,瞧!

environment:
  - DB_HOST=db

暫無
暫無

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

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