我已经创建了一个使用多个容器的服务,我的项目的基本结构是:
|--maindir:
|--app1:
|--dockerfile1
|--proyect folder...
|--app2:
|--dockerfile2
|--proyect folder...
|--app3:
|--dockerfile3
|--proyect folder...
当前我正在部署每个容器的工作是:
1)使用docker。建立以创建图像 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并没有太大区别。
答案 0 :(得分:0)
首先,当您使用Azure CLI命令request.inputs['inputs'].CopyFrom(tf.make_tensor_proto([tf_ex.SerializeToString()], dtype=types_pb2.DT_STRING),shape=[1])
时,它意味着您创建了Azure容器实例,但是当您在通过链接提供的文档中引用docker-compose文件时,则意味着Azure Web应用程序。换句话说,有两种不同的Azure服务。
此外,无论何时使用docker映像,无论ACR还是Docker集线器,都需要自己创建映像并找到一个注册表以将映像推送到。
如果使用docker-compose,它可以帮助您一次构建所有映像。您只需要创建docker-compose文件,并使用值Dockerfile path设置az container create
选项。您可以看一下docker-compose example。