3

我正在尝试使用 Docker Compose 和 Secrets 部署 IMAP 服务器以进行证书管理。但只要这样做docker-compose up -d,我就会得到:

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

证书机密也会重复此警告。

我已经检查了安装的 compose 版本和所需版本之间的兼容性,一切似乎都很好。

我在 Docker 引擎版本17.06.0-ce和 Docker compose 版本1.14.0上运行。


这是我的撰写文件:

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,模式:0640),因此我必须在容器启动期间手动更改文件的所有权和模式.

有没有想过?

4

1 回答 1

2

上没有适当的 Docker 机密支持docker-compose

根据贡献者对 github 问题的评论,

docker-compose 中的 secrets 实现是使用主机绑定的模拟实现。实际的秘密功能仅适用于 Swarm 服务,可以使用 docker stack deploy 进行部署。

这些警告对任何版本的 docker-compose 都有效。

来源

于 2019-04-08T17:21:55.987 回答