我正在尝试将Portainer的一个实例部署到docker swarm。我不确定如何设置正确的标志以启用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 compose yml文件?
答案 0 :(得分:3)
默认情况下,Portainer的网络界面和API通过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生成证书和密钥。
与Rubin suggests一样,您可以使用https://composerize.com/从docker-compose.yml
命令生成docker
。
因此,您的docker-compose文件应如下所示:
version: 3
services:
portainer:
image: portainer/portainer
container_name: portainer
restart: always
ports:
- '443:9000'
volumes:
- '~/local-certs:/certs'
- 'portainer_data:/data'
答案 1 :(得分:2)
https://www.w3schools.com/charsets/ref_html_8859.asp可以帮助将您的docker
命令转换为docker-compose.yml
答案 2 :(得分:0)
可能我参加聚会有点晚了,但是看起来您必须使用Portainer的标志为您的Portainer启用ssl(如documentation中所述),而composerize.com则在某个地方丢失了该部分,因此您应该将其添加到您的撰写中:
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
答案 3 :(得分:0)
以下对我有用:
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