Portainer-如何在docker-compose.yml中指定SSL?

时间:2018-10-15 14:53:43

标签: docker docker-swarm portainer

我正在尝试将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文件?

4 个答案:

答案 0 :(得分:3)

根据Portainer documentation

  

默认情况下,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