将多容器组部署到Azure无服务器

时间:2020-11-07 07:37:06

标签: azure docker docker-compose serverless

我有一个容器化的aws cloudformation register-type --type-name My::Resource::Example --schema-handler-package [s3 object path] --type RESOURCE 应用程序以及一个Django Rest Framework容器用于后台任务处理,还有Celery容器作为代理。

我想将此应用程序部署到Redis。我一直在寻找解决方案,但到目前为止还没有运气。

这是我有两个问题-

  1. 是否可以将多容器组应用程序部署到Azure Serverless

  2. 是否可以将上述的技术堆栈部署到Azure Serverless? (请提供示例或指向文档的链接以指导我。)

项目的Docker配置-

Azure Serverless

docker-compose

version: "3" services: redis: container_name: redis-container image: "redis:latest" ports: - "6379:6379" restart: always command: "redis-server" snowflake-optimizer: container_name: snowflake-optimizer build: context: . dockerfile: Dockerfile volumes: - .:/snowflake-backend ports: - "80:80" expose: - "80" restart: always command: "python manage.py runserver 0.0.0.0:80" links: - redis celery: container_name: celery-container build: context: . dockerfile: Dockerfile.celery command: "celery -A snowflake_optimizer worker -l INFO" volumes: - .:/snowflake-optimizer restart: always links: - redis depends_on: - snowflake-optimizer (Django Rest框架)

Dockerfile

FROM python:3.7-slim ENV PYTHONUNBUFFERED 1 RUN apt-get update &&\ apt-get install python3-dev default-libmysqlclient-dev gcc -y &&\ apt-get install -y libssl-dev libffi-dev &&\ python -m pip install --upgrade pip &&\ mkdir /snowflake-backend WORKDIR /snowflake-backend COPY ./requirements.txt /requirements.txt COPY . /snowflake-backend EXPOSE 80 RUN pip install -r /requirements.txt RUN pip install -U "celery[redis]" RUN python manage.py makemigrations &&\ python manage.py migrate CMD [ "python", "manage.py", "runserver", "0.0.0.0:80"] (芹菜)

Docker.celery

2 个答案:

答案 0 :(得分:1)

问题是Azure Serverless在这里是什么意思。通常,人们将无服务器与无服务器功能相关联。截至2020年11月,Azure Functions不支持Docker部署,至少不以某种方式能够部署Django应用程序。

可以理解,还有其他一些选项可以将容器部署到Azure:

  1. Azure Container Instances:它们确实支持多容器部署。容器编排非常有限,您只能按秒计费。
  2. Azure WebApp:具有预览功能,可支持多容器部署。由于它处于预览状态,因此价格可能会更改,并且有关协调的信息也很少。我认为这将是您问题中描述的部署的推荐方法,我会尝试一下。
  3. AKS - Azure Kubernetes Service:这应该用于严重的生产工作负载,显然,它需要Kubernetes知识,这对于暂时的简单部署可能是巨大的开销。

答案 1 :(得分:0)

使用Azure CLI使用Docker Compose文件在Azure容器实例上部署多容器应用程序:

az container create --resource-group myResourceGroup --file docker-compose.yaml

Documentation

您还可以直接使用docker-compose CLI。

Documentation