docker compose on azure:不接受卷定义

docker compose on azure: volume definition is not accepted

在 docker 组合多容器应用程序时,我收到关于我的卷定义的错误: services.volumes 不允许添加 属性 nginx。

在我的 docker-compose.yaml 中,我按照 docker 的规定定义了体积: https://docs.docker.com/engine/context/aci-integration/#using-azure-file-share-as-volumes-in-aci-containers.

我的docker-compose.yaml:

version: '3.4'
services:
  nginx:
    image: nginx
    container_name: nginx
    restart: always
    volumes:
      - nginxdata/conf.d:/etc/nginx/conf.d
      - nginx/basic_auth:/etc/nginx/basic_auth
    ports:
      - 80:80/tcp
      
volumes:
  nginxdata:
    driver: azure_file
    driver_opts:
      share_name: nginxdata
      storage_account_name: mystorageacct
  nginx:
    driver: azure_file
    driver_opts:
      share_name: nginx
      storage_account_name: mystorageacct

当我进行 docker 撰写时,出现错误: “services.volumes 不允许附加 属性 nginx 数据”。

注意:存在 azure 共享,例如,这有效:

docker --context myaci run --name=nginxvolip -p 80:80 -v mystorageacct/nginx:/usr/share/nginx/html nginx

我错过了什么吗?欢迎帮助!

让我们看一下运行良好的示例:

docker --context myaci run --name=nginxvolip -p 80:80 -v mystorageacct/nginx:/usr/share/nginx/html nginx

这个命令的意思是将存储mystorageacct中的文件共享nginx挂载到路径/usr/share/nginx/html,没有问题。但是在 docker-compose 文件中,您可以像这样配置挂载:

volumes:
      - nginxdata/conf.d:/etc/nginx/conf.d
      - nginx/basic_auth:/etc/nginx/basic_auth

您似乎想将文件共享中的文件夹挂载到容器中的路径中。这就是问题所在。您无法将文件共享内的文件夹挂载到容器,只能挂载您可以挂载的文件共享。而且报错还显示Additional 属性 is not allowed 关键字。所以可用的挂载应该是这样的:

volumes:
      - nginxdata:/etc/nginx/conf.d
      - nginx:/etc/nginx/basic_auth