Секреты Docker и проблема совместимости Compose

Я пытаюсь развернуть сервер IMAP, используя Docker Compose и Secrets для управления сертификатами. Но как только делаю 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), поэтому я должен вручную изменить владельца и режим файлов во время запуска контейнера. .

Любая мысль об этом?


person Hiago Prata    schedule 05.07.2017    source источник
comment
Ну, это происходит потому, что эта функция является всего лишь фиктивной реализацией, и, скорее всего, так и останется. Обнаружил это благодаря комментариям к проблеме, которую я открыл в репозитории Compose Github.   -  person Hiago Prata    schedule 07.07.2017
comment
Я взял на себя смелость получить этот комментарий и добавить ответ на его основе.   -  person That Brazilian Guy    schedule 08.04.2019


Ответы (1)


На docker-compose нет надлежащей поддержки секретов Docker.

Согласно комментарию участника к проблеме github,

Реализация секретов в docker-compose — это фиктивная реализация, использующая привязки к хосту. Фактическая функция секретов доступна только для сервисов Swarm, которые можно развернуть с помощью развертывания стека докеров.

Эти предупреждения действительны для любой версии docker-compose.

(источник)

person That Brazilian Guy    schedule 08.04.2019