根据Portainer 文档:
默认情况下,Portainer 的 Web 界面和 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 建议的那样,您可以使用https://composerize.com/生成docker-compose.ymlfromdocker命令。
所以,你的 docker-compose 文件应该是这样的:
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
volumes:
portainer_data: