【发布时间】:2022-07-18 21:14:51
【问题描述】:
我有两个 Docker 容器——redis(运行 Redis 数据库)和node(运行 Node.js 应用程序)。我的 Node.js 应用程序需要与 Redis 数据库进行通信,但我不确定应该如何安排。以下是我目前想到的一些方法:
- 将两个容器放在一个网络上,暴露(但不发布)
redis容器的端口6379(或Redis服务器正在监听的任何地方),并从node容器连接到暴露的端口。 - 让 Redis 服务器监听一个 UNIX 套接字,该套接字安装到主机上的某个位置(即,在
redis容器之外),该套接字也安装到node容器中(这甚至可以工作吗?)。 - 完全抛弃单独容器的想法,将 Redis 服务器和 Node 应用程序放在同一个容器中(我真的不想这样做)。
哪个选项最好,或者您还有什么建议?我想最大限度地提高性能和安全性,但我还需要使用容器。
附注那里有一些与此类似的问题,但似乎没有一个能回答我的问题。话虽如此,如果您找到可能有帮助的现有答案,请链接到它。
【问题讨论】:
-
通过 TCP 使用 Docker 网络(选项 1)。 “暴露”在现代 Docker 中几乎没有任何意义,你可以忽略这个子步骤。几乎所有official Docker sample applications 都以这种方式工作,并且避免了共享文件方面的大量复杂情况。
标签: docker sockets unix unix-socket