2

我正在尝试将 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://porttainer.readthedocs.io/en/stable/deployment.html

但是你如何把它翻译成一个 docker compose yml 文件呢?

4

4 回答 4

12

可能我参加聚会有点晚了,但是看起来您必须使用 Portainer 的标志来为您的 Portainer 启用 ssl(如文档中所述)并且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
于 2019-03-28T13:09:20.180 回答
7

根据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:
于 2018-10-22T07:15:05.680 回答
3

https://composerize.com/可以帮助将您的docker命令翻译成docker-compose.yml

于 2018-10-22T05:29:53.103 回答
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
于 2020-09-07T12:29:53.683 回答