mysql - 在执行 "storage account"时无法使用我创建的 "file share"和 "docker compose up"

标签 mysql azure docker docker-compose

我一直在关注有关 azure 使用 docker compose 的所有教程,并且遇到了有关卷的问题。

我的 docker compose 文件如下所示:

version: '3.7'
services:
  app-server:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/shapeshop?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: root
      SERVER_PORT: 8080
    networks:
      - backend

  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_DATABASE: shapeshop
      MYSQL_USER: admin
      MYSQL_PASSWORD: admin
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - "db-data:/var/lib/mysql"
    networks:
      - backend

volumes:
  db-data:
    driver: azure_file
    driver_opts:
      share_name: shapeshopfileshare
      storage_account_name: shapeshopstorageaccount

networks:
  backend:

在上面的 YML 文件中,我为 mysql 容器 (db) 定义了,以指向 azure 工件。教程指出我应该使用“azure_file”作为驱动程序,然后创建文件共享和存储帐户。

我创建了这两个(shapeshopfileshare 和 shapeshopstorageaccount):

enter image description here

现在,如果我像这样登录“az”CLI:

az login

我看到我的订阅“shapeShopResourceGroup

  {
    "id": "/subscriptions/8cdb50cb-ede8-4eac-80df-55afadf861cd/resourceGroups/shapeShopResourceGroup",
    "location": "eastus",
    "managedBy": null,
    "name": "shapeShopResourceGroup",
    "properties": {
      "provisioningState": "Succeeded"
    },
    "tags": null,
    "type": "Microsoft.Resources/resourceGroups"
  },

我还使用“aci”上下文:

enter image description here

但是,当我执行 docker compose up 时,我收到此错误:

error: The storage account named shapeshopstorageaccount is already taken.

这真的让我很沮丧,因为,是的,shapeshopstorageaccount确实存在!我为我创造了它!

那么,我认为我的上下文与我的订阅没有正确关联。因此,要检查我输入:

az storage account list

...我的 shapeshopstorageaccount 列在返回的 JSON 中。因此,我的存储帐户和订阅之间似乎似乎存在关联。

为什么 azure(或 docker-compose)没有将我的 YML 文件中声明的卷与我创建的 azure 存储关联起来?

最佳答案

您可能需要使用 az acr login --name <acrName> 登录 Azure 容器注册表并从同一终端运行 compose 命令。检查此了解更多 details .

或者,您可能需要在 yaml 中包含存储帐户 key ,例如 this .

另请检查this ,但我不确定为什么变量名称不同。

关于mysql - 在执行 "storage account"时无法使用我创建的 "file share"和 "docker compose up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74413427/

相关文章:

php - 选择查询检查表单数据是否已存在于数据库 MySQL/PHP 中的小问题

azure - 如何在没有浏览器身份验证的情况下在 Azure DevOps 构建管道中使用无服务器框架?

azure - 获取 Azure 应用程序的authenticode

docker - ansible docker_compose 网络

ruby-on-rails - 如何在 Mac 上的 Dockerized Rails 环境中使用 Selenium 和 Chrome 运行 Capybara 测试

php - PhP连接MySqli

mysql - SQL:反转字符串位置

php - Codeigniter 模型未插入值

Git 存储库在 Azure 数据工厂中不起作用

docker - 使用Dockerfile在700(drwx ------)目录中创建文件