You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加Azure File Share后,GitHub Actions部署Weaviate持久化容器失败

问题描述

在Azure上部署Weaviate容器后,添加Azure File Share实现数据持久化时容器陷入等待状态,Log Analytics报错:standard_init_linux.go:228: exec user process caused: exec format error。镜像通过Mac Pro M3手动拉取、标记并推送到Azure Container Registry(ACR),怀疑是架构不兼容导致。现有可用资源:Azure存储账户、带贡献权限的Service Principal、StorageV2类型的LRS文件共享。

正常运行(无持久化)的GitHub Actions部署脚本

- name: 'Deploy Weaviate to Azure Container Instances'
    uses: 'azure/aci-deploy@v1.1.3'
    with:
      resource-group: ${{ secrets.RESOURCE_GROUP }}
      dns-name-label: ${{ vars.WEAVIATE }}
      image: ${{ secrets.REGISTRY_LOGIN_SERVER }}/${{ secrets.WEAVIATE_IMAGE_NAME }}
      registry-login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
      registry-username: ${{ secrets.AZ_TECHNICAL_USER_ID }}
      registry-password: ${{ secrets.AZ_TECHNICAL_USER_SECRET }}
      name: ${{ vars.WEAVIATE }}
      environment-variables: 'QUERY_DEFAULTS_LIMIT=25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true PERSISTENCE_DATA_PATH=/var/lib/weaviate ENABLE_MODULES="" CLUSTER_HOSTNAME=node1'
      log-analytics-workspace: ${{ secrets.LOG_ANALYTICS_WORKSPACE_ID }}
      log-analytics-workspace-key: ${{ secrets.LOG_ANALYTICS_WORKSPACE_KEY }}
      log-type: 'ContainerInstanceLogs'
      ports: '8080 50051'
      location: ${{ secrets.LOCATION }}
      memory: 3

添加Azure File Share后无法运行的脚本

- name: 'Deploy Weaviate to Azure Container Instances'
    uses: 'azure/aci-deploy@v1.1.3'
    with:
      resource-group: ${{ secrets.RESOURCE_GROUP }}
      dns-name-label: ${{ vars.WEAVIATE }}
      image: ${{ secrets.REGISTRY_LOGIN_SERVER }}/${{ secrets.WEAVIATE_IMAGE_NAME }}
      registry-login-server: ${{ secrets.REGISTRY_LOGIN_SERVER }}
      registry-username: ${{ secrets.AZ_TECHNICAL_USER_ID }}
      registry-password: ${{ secrets.AZ_TECHNICAL_USER_SECRET }}
      name: ${{ vars.WEAVIATE }}
      environment-variables: 'QUERY_DEFAULTS_LIMIT=25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true PERSISTENCE_DATA_PATH=/var/lib/weaviate ENABLE_MODULES="" CLUSTER_HOSTNAME=node1'

      azure-file-volume-account-name: ${{ secrets.AZURE_STORAGE_ACCOUNT_NAME }}
      azure-file-volume-account-key: ${{ secrets.AZURE_STORAGE_ACCOUNT_KEY }}
      azure-file-volume-share-name: weaviate-data
      azure-file-volume-mount-path: /var/lib/weaviate
      
      log-analytics-workspace: ${{ secrets.LOG_ANALYTICS_WORKSPACE_ID }}
      log-analytics-workspace-key: ${{ secrets.LOG_ANALYTICS_WORKSPACE_KEY }}
      log-type: 'ContainerInstanceLogs'
      ports: '8080 50051'
      location: ${{ secrets.LOCATION }}
      memory: 3
解决思路
  • 验证镜像架构兼容性:Mac Pro M3是ARM64架构,Azure容器实例默认使用AMD64(x86_64)节点。推送镜像时需确保构建/拉取的是适配AMD64的Weaviate镜像,或者在ACI部署时指定ARM64节点。
    • 拉取镜像时指定架构:docker pull --platform linux/amd64 semitechnologies/weaviate:latest,再标记推送至ACR。
    • 若需保留ARM64镜像,在ACI部署脚本中添加cpu-architecture: ARM64参数,确保Azure分配对应架构的节点。
  • 检查文件共享挂载权限:Azure File Share挂载到容器后,需确保容器内的Weaviate进程对挂载路径/var/lib/weaviate有读写权限。可尝试先手动创建共享内的目录,或在容器启动命令中添加权限设置步骤(如chown -R weaviate:weaviate /var/lib/weaviate)。
  • 排查环境变量与挂载路径冲突:确认PERSISTENCE_DATA_PATH设置的路径与挂载路径一致,且挂载操作未覆盖容器内必要的初始化文件。可尝试临时修改挂载路径为其他目录(如/mnt/weaviate-data),同时调整PERSISTENCE_DATA_PATH参数,验证是否为路径冲突导致启动失败。
  • 检查ACR镜像推送完整性:重新推送镜像至ACR,确保推送过程无报错,且ACR中镜像的架构标签正确。可通过az acr repository show-manifests --name <ACR_NAME> --repository <IMAGE_NAME>查看镜像的架构信息。

内容的提问来源于stack exchange,提问作者RSale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:27:05