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