【发布时间】: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