【发布时间】:2021-04-08 08:59:40
【问题描述】:
当我尝试运行我在没有 docker 的情况下使用的应用程序时,它运行良好,但在 docker-compose 中我收到此错误:
| Error: Invalid value for '-A' / '--app':
| Unable to load celery application.
| The module sampleproject was not found.
我的 docker-compose 文件
app:
container_name: myapp
hostname: myapp
build:
context: .
dockerfile: Dockerfile
image: sampleproject
tty: true
command: >
bash -c "
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000
"
env_file: .env
ports:
- "8000:8000"
volumes:
- .:/project
depends_on:
- database
- redis
redis:
image: redis:alpine
celery:
build:
context: ./
dockerfile: Dockerfile
command: celery -A sampleproject worker -l info
depends_on:
- database
- redis
celery-beat:
build: .
command: celery -A sampleproject beat -l info
depends_on:
- database
- redis
- celery
我的 Docker 文件
FROM python:3.8
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt --no-cache-dir \
&& rm -rf requirements.txt
RUN mkdir /project
WORKDIR /project
我的文件夹结构是这样的:
【问题讨论】:
-
从你的
Dockerfile看来你没有添加你的应用程序源代码(除非它作为一个包安装在你的requirements.txt中,我在这里看不到 -
@ItayB 先生是哪个应用程序?你在说 docker-compose
app吗? -
app = Celery('my_app', broker='amqp://guest@localhost//') -
我想把这个放在哪里?我在
celery.py中有这个os.environ.setdefault("DJANGO_SETTINGS_MODULE", "sampleproject.settings") app = Celery("sampleproject")@ItayB -
尝试检查 compose 后正在运行的
celery容器,以检查是否确实存在sampleproject文件夹。确保执行 celery 命令的上下文是预期的,sampleproject 应该是一个子文件夹。
标签: django docker docker-compose celery django-celery-beat