【问题标题】:docker-compose.yml for production - Django and Celery用于生产的 docker-compose.yml - Django 和 Celery
【发布时间】:2021-03-12 20:43:22
【问题描述】:

我希望部署一个使用 Django 和 celery 的简单应用程序。

docker-compose.yml:

version: "3.8"
   
services:
    django:
        build: .
        container_name: django
        command: python manage.py runserver 0.0.0.0:8000
        volumes:
            - .:/usr/src/app/
        ports:
            - "8000:8000"
        environment:
            - DEBUG=1
            - CELERY_BROKER=redis://redis:6379/0
            - CELERY_BACKEND=djcelery.backends.database:DatabaseBackend
        depends_on:
            - redis
    celery:
        build: .
        command: celery -A core worker -l INFO
        volumes:
            - .:/usr/src/app
        environment:
            - DEBUG=1
            - CELERY_BROKER=redis://redis:6379/0
            - CELERY_BACKEND=djcelery.backends.database:DatabaseBackend
        depends_on:
            - django
            - redis
    redis:
        image: "redis:alpine"
        
volumes:
    pgdata:


Dockerfile:

FROM python:3.7
WORKDIR /app
ADD . /app

#Install dependencies for PyODBC
RUN apt-get update \
 && apt-get install unixodbc -y \
 && apt-get install unixodbc-dev -y \
 && apt-get install tdsodbc -y \
 && apt-get clean -y


# install ODBC driver in docker image
RUN apt-get update \
 && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
 && curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list \
 && apt-get update \
 && ACCEPT_EULA=Y apt-get install --yes --no-install-recommends msodbcsql17 \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/* \
 && rm -rf /tmp/*


# install requirements
RUN pip install --trusted-host pypi.python.org -r requirements.txt
EXPOSE 5000

ENV NAME OpentoAll

CMD ["python", "app.py"]

项目目录:

当我在本地运行“docker-compose up”时,celery worker 运行,我可以去 localhost:8000 访问 API 以向 celery 任务发出异步请求。

现在我想知道如何将它部署到云环境中?我需要构建和部署的映像是什么?谢谢

【问题讨论】:

  • 当您说“云环境”时,您是否有特定的设置?您已经有一个构建映像的 Dockerfile,因此您需要安排将其推送到某种注册表(Docker Hub,您的云提供商托管的东西,例如 ECR/ACR/GCR,...)。我建议删除覆盖图像中内容的volumes:,并在尝试部署到更多相关的地方之前在本地测试此设置。

标签: django docker kubernetes docker-compose celery


【解决方案1】:

您需要在 django 容器中安装应用服务器(例如 gunicorn),然后在端口 8000 上运行。您还需要在容器中或安装在主机上的网络服务器(例如 nginx)。 Web 服务器需要充当 gunicorn 的反向代理,并提供静态 Django 内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2020-11-16
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    相关资源
    最近更新 更多