我正在尝试使用 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),因此我必须在容器启动期间手动更改文件的所有权和模式.
有没有想过?