如何使用letsencrypt通过安全服务器运行docker应用程序?

需要通过安全networking启动Horizo​​n服务器。 使用这个github回购https://github.com/stellar/docker-stellar-core-horizo​​n

下面的README文件我试过了,

docker run --rm -it -p "8000:8000" --name stellar stellar/quickstart --testnet 

这开始我的地平线应用程序通过端口8000与http服务器。 我需要运行在https服务器上。 为此,我尝试了几件事情,

  docker run --rm -it -p "8000:443" --name stellar stellar/quickstart --testnet docker run --rm -it -p "8000:8000" --name stellar stellar/quickstart --testnet docker --tlsverify --tlscacert=ca.pem --tlscert=cert.pem --tlskey=key.pem 

还有更多的这些SSL密钥。 尝试使用nginx将https调用从服务器redirect到http调用,但未能这样做。

请提供一种通过安全服务器启动Docker容器的方法。

您需要使用nginx在Docker镜像中进行代理configuration。

 server { listen 443 ssl; server_name www.example.com; ssl_certificate www.example.com.crt; ssl_certificate_key www.example.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ... } 

由于docker文件在dockerhub中可用,您可以使用https修改它,并公开端口443.然后运行docker

docker运行–rm -it -p“8000:443” – 恒星恒星/ quickstart –testnet

https://hub.docker.com/r/stellar/quickstart/~/dockerfile/

你想部署stellar核心的https版本,或者在这种情况下,任何dockerized应用程序,即web服务器,你使用官方让我们encryption图像。

这里是docker-compose.yml文件,您可以在其中部署Docker组合中的任何dockerized Web服务器,以自动化您的证书进程。

nginx: build: nginx-image links: - letsencrypt - app environment: - MY_DOMAIN_NAME=DOMAIN_NAME mem_limit: 2g cpu_shares: 256 # restart: always ports: - "80:80" - "443:443" volumes_from: - letsencrypt letsencrypt: image: quay.io/letsencrypt/letsencrypt:latest command: bash -c "sleep 6 && certbot certonly --standalone -d DOMAIN_NAME --text --agree-tos --email your_email --server https://acme-v01.api.letsencrypt.org/directory --rsa-key-size 4096 --verbose --renew-by-default --standalone-supported-challenges http-01" entrypoint: "" volumes: - /etc/letsencrypt - /var/lib/letsencrypt ports: - "80" - "443" environment: - TERM=xterm app: build: app-image ports: - "80"

用上面的文件中的服务器CNAME和电子邮件IDreplace域名。 应用程序部分,您需要分配您的图像的名称(dockerized web服务器在您的案例恒星形象)。 然后,只需运行docker-compose builddocker-compose up即可安全运行。

还有其他的技术,一旦你获得证书,你可以简单地安装到容器,如下所示。 或者你可以编辑上面的答案中提到的dockerfile并直接在安全端口上运行它。

我到目前为止学到的是,我们不能运行docker安全的服务器。 Docker只是要求提供服务的端口。 解决scheme是使用docker需要安全的简单应用程序。 在这里,我无法理解这个docker应用程序,所以我使用nginx。

我的nginx文件有点像这样

 server { listen 9000 ssl; server_name 127.0.0.1; ssl_certificate /etc/letsencrypt/live/staging.globalblockchain.io/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/staging.globalblockchain.io/privkey.pem; # managed by Certbot location / { proxy_pass http://127.0.0.1:8000; } }