我有一款Django应用程序.那也有红花、Celery 和鲜花.

一切都在我的本地机器上运行.

但当我试图将其对接时,Redis和Django应用程序正在启动.但Celery 和鲜花却未能起步.

在启动Celery 时,它给了我这个错误:

Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "celery -A core worker -P eventlet --autoscale=10,1 -l INFO": executable file not found in $PATH: unknown

Dockerfile

# For more information, please refer to https://aka.ms/vscode-docker-python
FROM python:bullseye

EXPOSE 8000

RUN apt update && apt upgrade -y
# && apk install cron iputils-ping sudo nano -y

# Install pip requirements
COPY requirements.txt .
RUN python -m pip install -r requirements.txt
RUN rm requirements.txt

WORKDIR /app
COPY ./src /app
RUN mkdir "log"

# Set the environment variables
ENV PYTHONUNBUFFERED=1
ENV DJANGO_SETTINGS_MODULE=core.settings


# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
# RUN echo 'appuser ALL=(ALL) NOPASSWD: ALL' >  /etc/sudoers.d/appuser
USER appuser


# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug
ENTRYPOINT ["sh", "entrypoint.sh"]
CMD ['gunicorn', 'core.wsgi:application', '--bind', '0.0.0.0:8000']

entrypoint.sh

#!/bin/sh

echo "Apply database migrations"
python manage.py migrate

# Start server
echo "Starting server"
# run the container CMD
exec "$@"

docker-compose.yml

version: "3.8"

services:
  mailgrass_backend:
    container_name: mailgrass_backend
    restart: unless-stopped
    ports:
      - "8000:8000"
    volumes:
      - npm:/app
      - ./.env:/app/.env:ro
    networks:
      - npm
    env_file: .env
    depends_on:
      - redis
    build:
      context: .
      dockerfile: ./Dockerfile
  redis:
    container_name: redis
    image: redis:7.0-alpine
    restart: unless-stopped
    env_file: .env
    ports:
      - "6379:6379"
    command:
      - 'redis-server'
    networks:
      - npm
  celery:
    container_name: celery
    restart: unless-stopped
    env_file: .env
    volumes:
      - npm:/app
      - ./.env:/app/.env:ro
    build:
      context: .
      dockerfile: ./Dockerfile
    networks:
      - npm
    depends_on:
      - redis
    entrypoint:
      - "celery -A core worker -P eventlet --autoscale=10,1 -l INFO"
  flower:
    container_name: flower
    restart: unless-stopped
    ports:
      - "5555:5555"
    env_file: .env
    volumes:
      - npm:/app
      - ./.env:/app/.env:ro
    build:
      context: .
      dockerfile: ./Dockerfile
    networks:
      - npm
    depends_on:
      - redis
      - celery
    entrypoint:
      - "celery -b redis://redis:6379 flower"
volumes:
  npm:
  postgres:
networks:
  npm:

requirements.txt

amqp==5.1.1
asgiref==3.7.2
attrs==23.1.0
billiard==4.1.0
black==23.7.0
celery==5.3.1
certifi==2023.7.22
cffi==1.15.1
charset-normalizer==3.2.0
click==8.1.6
click-didyoumean==0.3.0
click-plugins==1.1.1
click-repl==0.3.0
cron-descriptor==1.4.0
cryptography==41.0.3
defusedxml==0.7.1
dj-crontab==0.8.0
dj-rest-auth==4.0.1
Django==4.2.4
django-allauth==0.54.0
django-annoying==0.10.6
django-celery-beat==2.5.0
django-cleanup==8.0.0
django-cors-headers==4.2.0
django-debug-toolbar==4.2.0
django-filter==23.2
django-phonenumber-field==7.1.0
django-timezone-field==5.1
djangorestframework==3.14.0
djangorestframework-simplejwt==5.2.2
dnspython==2.4.1
drf-spectacular==0.26.4
email-validator==2.0.0.post2
eventlet==0.33.3
flower==2.0.1
greenlet==2.0.2
humanize==4.7.0
idna==3.4
inflection==0.5.1
isort==5.12.0
jsonschema==4.18.6
jsonschema-specifications==2023.7.1
kombu==5.3.1
mailchecker==5.0.9
Markdown==3.4.4
mypy-extensions==1.0.0
oauthlib==3.2.2
packaging==23.1
pathspec==0.11.2
phonenumberslite==8.13.18
Pillow==10.0.0
platformdirs==3.10.0
prometheus-client==0.17.1
prompt-toolkit==3.0.39
pycparser==2.21
PyJWT==2.8.0
pyotp==2.9.0
python-crontab==3.0.0
python-dateutil==2.8.2
python-dotenv==1.0.0
python3-openid==3.2.0
pytz==2023.3
PyYAML==6.0.1
redis==4.6.0
referencing==0.30.2
requests==2.31.0
requests-oauthlib==1.3.1
rpds-py==0.9.2
six==1.16.0
sqlparse==0.4.4
tornado==6.3.2
tzdata==2023.3
uritemplate==4.1.1
urllib3==2.0.4
vine==5.0.0
wcwidth==0.2.6
whitenoise==6.5.0
gunicorn

我到底做错了什么?

推荐答案

我在我的docker-compose.yml里发现了这个问题.

我给entrypoint下了这样的定义:

entrypoint:
      - "celery -A core worker -P eventlet --autoscale=10,1 -l INFO"

但用一句话来定义这一点的正确方式是:

entrypoint: "celery -A core worker -P eventlet --autoscale=10,1 -l INFO"

Python相关问答推荐

如何在Python中使用ijson解析SON期间检索文件位置?

从管道将Python应用程序部署到Azure Web应用程序,不包括需求包

在Pandas 日历中插入一行

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

Django mysql图标不适用于小 case

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

如何让Flask 中的请求标签发挥作用

按顺序合并2个词典列表

Stacked bar chart from billrame

在极性中创建条件累积和

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

删除marplotlib条形图上的底边

Python列表不会在条件while循环中正确随机化'

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

Matplotlib中的字体权重

跳过嵌套JSON中的级别并转换为Pandas Rame

Beautifulsoup:遍历一个列表,从a到z,并解析数据,以便将其存储在pdf中.

为什么t sns.barplot图例不显示所有值?'

使用polars. pivot()旋转一个框架(类似于R中的pivot_longer)

如何使用pytest在traceback中找到特定的异常