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

使用SaltStack官方Docker Formula部署1Password Connect容器时Docker卷挂载异常求助

排查SaltStack Docker Formula卷挂载异常问题

我仔细排查了你的Pillar配置和问题细节,发现两个核心问题导致了卷挂载异常:

1. Pillar配置存在语法错误

看你op-connect-sync容器的binds配置,两个挂载项的引号都不配对:

binds:
  - /home/kevinadmin/1password-credentials.json:/home/opuser/.op/1password-credentials.json"
  - data:/home/opuser/.op/data"

第一个挂载项开头缺双引号、结尾多了引号;第二个同样结尾多了双引号。这种语法错误会让Salt解析Pillar时出现异常,直接忽略了凭证文件的挂载配置,甚至会干扰共享卷的关联逻辑。

2. Compose结构不符合Salt Docker Formula的预期

Salt的Docker Formula对Compose配置的层级有明确要求:所有容器服务必须放在services节点下,共享卷定义要放在volumes节点下,且二者都归属于一个统一的Compose项目(比如命名为1password-connect)。你当前的配置直接把容器名放在docker.compose根节点下,没有遵循这个结构,导致Formula无法识别到两个容器需要共享同一个data卷,因此为每个容器单独创建了独立卷。

修复后的完整Pillar配置

docker:
  containers:
    running:
      - op-connect-api
      - op-connect-sync
  op-connect-api:
    image: "1password/connect-api:latest"
  op-connect-sync:
    image: "1password/connect-sync:latest"
  compose:
    1password-connect:  # 定义统一的Compose项目名称
      services:
        op-connect-api:
          hostname: "op-connect-api.domain.local"
          ports: "8080:8080"
          binds:
            - "/home/kevinadmin/1password-credentials.json:/home/opuser/.op/1password-credentials.json"
            - "data:/home/opuser/.op/data"
        op-connect-sync:
          hostname: "op-connect-sync.domain.local"
          binds:
            - "/home/kevinadmin/1password-credentials.json:/home/opuser/.op/1password-credentials.json"
            - "data:/home/opuser/.op/data"
      volumes:
        data:  # 共享卷定义在项目的volumes节点下

验证与清理步骤

  1. 先清理之前生成的错误独立卷:
    docker volume rm $(docker volume ls -q | grep data)
    
  2. 刷新Minion的Pillar配置:
    salt '<你的MinionID>' saltutil.refresh_pillar
    
  3. 执行Docker状态部署:
    salt '<你的MinionID>' state.apply docker
    
  4. 部署完成后,用docker inspect <容器ID>检查Volumes字段,应该同时显示凭证文件和共享卷的挂载记录;再用docker volume ls查看,只会生成一个1password-connect_data卷(由项目名+卷名组合而成),两个容器会共用这个卷实现文件交换。

另外,关于凭证文件的权限,虽然你设置了777,但如果后续出现容器无法读取的情况,可以尝试将文件属主改为容器内opuser的UID(可通过docker run --rm 1password/connect-api id -u opuser查询)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:02:27