Portainer - как указать SSL в docker-compose.yml?

Я пытаюсь развернуть экземпляр Portainer в рое докеров. Я не уверен, как установить правильный флаг для включения SSL.

Из документов:

$ docker run -d -p 443:9000 --name portainer --restart always -v ~/local-certs:/certs -v portainer_data:/data portainer/portainer --ssl --sslcert /certs/portainer.crt --sslkey /certs/portainer.key

https://portainer.readthedocs.io/en/stable/deployment.html

Но как вы переводите это в Docker, составляющий YML-файл?

2 ответа

Решение

https://composerize.com/ может помочь перевести ваш docker командовать в docker-compose.yml

Возможно, я немного опоздал на вечеринку, но похоже, что вы должны использовать флаги Portainer, чтобы включить ssl для вашего Portainer (как сказано в документации), и https://composerize.com/ потерял эту часть где-то, так что вы должны добавить это в свой compose:

command:
  --ssl
  --sslcert /certs/portainer.crt
  --sslkey /certs/portainer.key

или для полного составления файла:

version: 3
services:
    portainer:
        image: portainer/portainer
        container_name: portainer
        restart: always
        ports:
            - '443:9000'
        volumes:
            - '~/local-certs:/certs'
            - 'portainer_data:/data'
        command:
            --ssl
            --sslcert /certs/portainer.crt
            --sslkey /certs/portainer.key

Согласно документации Portainer:

По умолчанию веб-интерфейс и API Portainer предоставляются через HTTP. Это не защищено, рекомендуется включить SSL в производственной среде.

Для этого вы можете использовать следующие флаги --ssl, --sslcert и --sslkey:

$ docker run -d -p 443:9000 --name portainer --restart always -v ~/local-certs:/certs -v portainer_data:/data portainer/portainer --ssl --sslcert /certs/portainer.crt --sslkey /certs/portainer.key

Вы можете использовать следующие команды для генерации необходимых файлов:

$ openssl genrsa -out portainer.key 2048 $ openssl ecparam -genkey -name secp384r1 -out portainer.key $ openssl req -new -x509 -sha256 -key portainer.key -out portainer.crt -days 3650

Обратите внимание, что Certbot может также использоваться для генерации сертификата и ключа.

Как предлагает Рубин, вы можете использовать https://composerize.com/ для генерации docker-compose.yml от docker команда.

Итак, ваш файл docker-compose должен выглядеть примерно так:

version: 3
services:
    portainer:
        ports:
            - '443:9000'
        container_name: portainer
        restart: always
        volumes:
            - '~/local-certs:/certs'
            - 'portainer_data:/data'
        image: portainer/portainer

Для меня работает следующее:

version: '3'
services:
  portainer:
    image: portainer/portainer-ce
    volumes:
    - "/local-certs:/certs"
    - "portainer_data:/data"
    restart: always
    ports:
    - "9000:9000"
    container_name: portainer
    command:
    - --ssl
    - --sslcert
    - /certs/wildcard.crt
    - --sslkey 
    - /certs/wildcard.key
Другие вопросы по тегам