Секреты Docker и проблема совместимости Compose
Я пытаюсь развернуть IMAP-сервер, используя Docker Compose и Secrets для управления сертификатами. Но как только сделаю docker-compose up -d
, Я получил:
ВНИМАНИЕ: Сервис "imap" использует секретный "ключ" с uid, gid или mode. Эти поля не поддерживаются этой реализацией файла Compose
Это предупреждение повторяется и для секрета.
Я уже проверил совместимость между установленной версией compose и требуемой версией, все, кажется, в порядке.
Я работаю на движке Docker версии 17.06.0-ce, а Docker составляет версию 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, mode: 0640), поэтому я должен вручную изменить владельца и режим файлов во время запуска контейнера,
Есть мысли об этом?
0 ответов
Там нет надлежащей поддержки секретов Docker на docker-compose
,
Согласно комментарию одного из авторов по проблеме GitHub,
Реализация секретов в docker-compose является фиктивной реализацией с использованием привязок хоста. Реальная функция секретов доступна только для сервисов Swarm, которые могут быть развернуты с помощью развертывания стека докеров.
Эти предупреждения действительны для любой версии docker-compose.
( источник)