Docker机密和Compose兼容性问题

4
我正在尝试使用Docker Compose和证书管理的Secrets部署IMAP服务器。但是一旦执行docker-compose up -d,我就会收到以下警告:

警告:服务“imap”使用带有uid、gid或模式的秘密“key”。这些字段不受Compose文件该实现支持。

同时cert secret也会有同样的警告。
我已经检查了安装的compose版本和所需版本的兼容性,一切看起来都正常。
我正在运行Docker引擎版本17.06.0-ce和Docker compose版本1.14.0
这是我的compose文件内容:
version: '3.1'

    services:
        imap:
            image: cyrus
            hostname: cyrus
            volumes:
                - my_volume_1
                - my_volume_2
                - my_volume_3
                - my_volume_4
            secrets:
                - source: key
                  target: my.key
                  uid: '0'
                  gid: '109'
                  mode: 0640
                - source: cert
                  target: my.crt
                  uid: '0'
                  gid: '109'
                  mode: 0640

            ports:
                - 110:110
                - 143:143
                - 993:993
                - 995:995
                - 4190:4190
            restart: always
            networks:
                - mail
        logger:
            image: gliderlabs/logspout
            hostname: logspout
            volumes:
                - /var/run/docker.sock:/var/run/docker.sock
            networks:
                - mail
            command: syslog://log-server-ip:514

    networks:
        mail:
            driver: bridge
    secrets:
        key:
            file: ./my.key
        cert:
            file: ./my.crt  

这实际上是有效的,但容器中生成的文件没有应有的属性(uid:0,gid:109,mode:0640),因此我必须在容器启动期间手动更改文件的所有权和模式。有什么想法吗?

1
这是因为该功能只是一个模拟实现,很可能会一直保持这种状态。我在Compose Github存储库上开启的问题中,通过评论发现了这一点。 - Hiago Prata
我冒昧地获取了这个评论并基于它添加了一个答案。 - That Brazilian Guy
1个回答

4
“docker-compose” 没有适当的 Docker 机密支持。
根据 Github 上一位贡献者在评论中所说,
引用:
“docker-compose” 中的机密实现是使用主机绑定的模拟实现。实际的机密功能仅适用于 Swarm 服务,可以使用“docker stack deploy”进行部署。
这些警告适用于任何版本的“docker-compose”。
(来源链接:source

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接