1

需要通过安全网络启动 Horizo​​n Server。使用这个 github 仓库 https://github.com/stellar/docker-stellar-core-horizo ​​n

按照我试过的 README 文档,

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

这将使用 http 服务器通过端口 8000 启动我的 Horizo​​n 应用程序。我需要在 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 调用从服务器重定向到 http 调用,但是没有这样做。

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

4

3 回答 3

1

到目前为止,我学到的是我们不能在安全的服务器上运行 docker。Docker 只是要求提供服务的端口。解决方案是简单的应用程序,它使用需要安全的 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;
  }
}

我所做的是,使用 nginx 将安全 9000 上的呼叫重定向到我的本地 8000。因此,我所有超过 8000 端口的内容都可以通过安全 9000 使用,并且 UI 能够使用这个安全 9000。

于 2017-12-13T15:21:46.463 回答
0

您需要使用 nginx 在 docker 映像中进行代理配置。

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;
    ...
}

由于 dockerfile 在 dockerhub 中可用,您可以使用 https 修改它并公开端口 443。然后运行 ​​docker as

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

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

于 2017-12-13T08:51:49.320 回答
0

您想部署stellar核心的 https 版本,或者在这种情况下部署任何 dockerized 应用程序,即 Web 服务器,您使用官方的 let's encrypt 图像。

这是docker-compose.yml您可以在 docker compose 中部署任何 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 和上述文件中的电子邮件 ID。您需要分配图像名称的应用程序部分(在您的案例中是 dockerized Web 服务器)。然后,只需运行docker-compose builddocker-compose up安全地运行它。

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

于 2017-12-13T10:17:59.620 回答