docker app 在 https 上服务并连接到外部 rethinkdb

Posted

技术标签:

【中文标题】docker app 在 https 上服务并连接到外部 rethinkdb【英文标题】:docker app serving on https and connecting to external rethinkdb 【发布时间】:2018-06-05 09:23:10 【问题描述】:

我正在尝试启动一个在 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 没有崩溃,但是我有两个问题:

    我无法通过浏览器通过指向https://localhost/login 访问它 我失去了 docker-compose 的使用。如果我们想在未来添加更多相互通信的服务,这将是一个问题。

那么,我如何启动一个可以与我的 rethinkdb 数据库通信的 docker,而无需将该数据库放入容器中? 如果您需要更多信息来回答这个问题,请告诉我。 感谢您在这方面的指导。 最终结果是 docker 将处理来自 https 的请求。 例如,我有一个名为 /getURL 的端点。 该请求包括在数据库中验证的令牌。网址是这样的: https://some-domain.com/getURL 在与数据库验证后,它将发回相关响应。 docker 需要能够在 443 和 28015 上与 rethinkdb 服务通话。

(由于 443 和 https 包括证书的使用,我希望有一个解决方案可以在常规 http 上使用一些随机端口来处理这个问题,我将从那里得到它) 谢谢!

附:当我在 pycharm 上没有 docker 启动它时,该服务可以工作,这是我遇到问题的 docker 配置。

【问题讨论】:

【参考方案1】:

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

--network="host"

由于这个解决方案现在对我有用,但它不是最好的解决方案,我暂时不会将此标记为答案。

【讨论】:

以上是关于docker app 在 https 上服务并连接到外部 rethinkdb的主要内容,如果未能解决你的问题,请参考以下文章

1021 docker3

Docker安装frp实现远程桌面连接

Docker:Docker Appium 镜像连接夜安卓神模拟器,并处理 connection refused 异常

VSCode + docker + SSH实现远程连接服务器并进行开发

Dockerizing NestJS APP 和 MongoDB “首次连接时无法连接到服务器 [localhost:27017]”

docker容器互连