azure - 使用 docker compose 将多个容器部署到 azure
问题描述
我创建了一个使用多个容器的服务,我的项目的基本结构是:
|--maindir:
|--app1:
|--dockerfile1
|--proyect folder...
|--app2:
|--dockerfile2
|--proyect folder...
|--app3:
|--dockerfile3
|--proyect folder...
目前我正在做的部署每个容器是:
1)使用码头工人。构建以创建映像 2) 标记映像并将其推送到 azure 注册表 3) 从 azure 注册表上的映像创建容器:
az container create \
--resource-group mygroup \
--name manager \
--image core.azurecr.io/samples/manager \
--registry-login-server xxx \
--registry-password xxx \
--registry-username xxx \
--ports 5000 5100 \
--memory 3 \
--cpu 1 \
--ip-address public \
--dns xxx \
--azure-file-volume-account-name xxx \
--azure-file-volume-account-key xxx \
--azure-file-volume-share-name xxx \
--azure-file-volume-mount-path /xxx
我需要每个容器的每个设置,例如 DNS、卷、内存……。
是否可以使用 docker compose.yml 文件来执行此操作?
我在 Azure 文档的示例中发现了这一点:
https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-multi-container-app
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
但是那个假设图像已经在天蓝色注册表中,对我来说不是这种情况。如果我必须一个一个地创建和推送图像,那么在最后使用 docker compose 并没有太大区别。
解决方案
首先,当你使用 Azure CLI 命令az container create
时,它意味着你创建了 Azure 容器实例,但是当你在提供链接的文档中引用 docker-compose 文件时,它意味着 Azure Web App。换句话说,有两种不同的 Azure 服务。
此外,无论何时使用 docker 镜像,您都需要自己创建镜像并找到将镜像推送到的注册表,无论是 ACR 还是 Docker hub。
如果您使用 docker-compose,它可以帮助您一次构建所有图像。您只需要创建 docker-compose 文件并build
使用值 Dockerfile 路径设置选项。您可以查看 docker-compose示例。
推荐阅读
- javascript - C3中水平条形图标签中的长字符串
- google-sheets - 如何连接按第二列中的值分组的多个单元格
- javascript - 在 aws lambda 上为 python 脚本使用 child_process spawn
- go - Go:将 uuid.UUID (satori) 类型的 reflect.Value 再次转换回 uuid.UUID
- python - Python:for循环中的多个条件,在字典中查找任何值
- python - 具有多个标题排列的 Pandas read_csv
- sql - 无法在 CATCH 块 SQL 中引发/引发异常
- python - 按 abc 顺序查找最长的子字符串
- airflow - 气流 - 未知的蓝色任务状态
- redis - 如果我在 redis 中有两个键,例如 X:Y 和 X:Z,我可以通过在 X 上搜索得到它们吗?