docker app在https上投放并连接到外部rethinkdb

时间:2018-06-05 09:23:11

标签: docker docker-compose rethinkdb

我正在尝试启动一个在python 3中运行龙卷风应用程序的docker容器。 它提供一些API调用,并将数据写入系统上的rethinkdb服务。 RethinkDB不在容器内运行。 它运行的系统是ubuntu 16.04。

每当我尝试使用docker-compose启动docker时,它会崩溃,表示与localhost:28015的连接被拒绝。 我研究了这个问题并意识到docker有自己的网络,并且必须在启动容器之前配置外部连接。 我使用a question I found中的此命令使其正常工作:

docker run -it --name "$container_name" -d -h "$host_name" -p 9080:9080 -p 1522:1522 "$image_name"

我已经更改了容器名称,主机名,端口和图像名称以适合我自己的应用程序。 现在,docker没有崩溃,但我有两个问题:

  1. 我无法通过指向https://localhost/login
  2. 从浏览器访问它
  3. 我丢失了docker-compose用法。如果我们想要在未来添加更多相互通信的服务,这就有问题了。
  4. 那么,如何在不将该数据库放入容器的情况下启动可以与我的rethinkdb数据库通信的docker? 如果您需要更多信息来回答这个问题,请告诉我们。 我很感激你的指导。
    最终结果是docker将通过https提供请求。 例如,我有一个名为/ getURL的终点。 该请求包括在DB中验证的令牌。 URL如下所示: https://some-domain.com/getURL 在与DB进行验证后,它将发回相关的响应。 docker需要能够通过rethinkdb服务在443和28015上进行通信。

    (由于443和https包括使用证书,我很欣赏一个解决方案,在常规http上使用一些随机端口来处理这个问题,我会从那里拿出来)
    谢谢!

    P.S。当我在pycharm上没有docker的情况下启动它时,该服务正常工作,这是我遇到问题的docker配置。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 我需要添加它,以便容器可以连接到数据库和rethinkdb:

--network="host"

由于此解决方案现在适用于我,但它不是最佳解决方案,我现在不会将此标记为答案。