[英]Sharing Linux socket between Docker containers
我有兩個 Docker 容器redis
(運行 Redis 數據庫)和node
(運行 Node.js 應用程序)。 我的 Node.js 應用程序需要與 Redis 數據庫通信,但我不知道應該如何安排。 以下是我目前想到的一些方法:
redis
容器的6379端口(或Redis服務器正在監聽的任何地方),並從node
容器連接到暴露的端口。redis
容器之外),該套接字也安裝到node
容器中(這甚至可以工作嗎?)。哪個選項是最好的,或者您還有其他建議嗎? 我想最大化性能和安全性,但我也需要使用容器。
PS 那里有一些與此類似的問題,但似乎沒有一個回答我的問題。 話雖如此,如果您找到可能有幫助的現有答案,請鏈接到它。
為了實現這種方法,您可以簡單地創建一個 docker 卷並將其安裝在兩個容器中。 例如,您可以基於redis
映像創建 Dockerfile:
FROM redis:7-alpine
RUN mkdir -p /run/redis-socket
RUN chmod 777 /run/redis-socket
COPY ./etc/redis.conf /etc/redis.conf
ENTRYPOINT ["docker-entrypoint.sh", "/etc/redis.conf"]
並將這樣的配置寫入./etc/redis.conf
:
unixsocket /run/redis-socket/redis.sock
unixsocketperm 777
port 0
然后將 docker 卷掛載到 redis 容器的/run/redis-socket/
。 不要忘記將該卷掛載到節點容器中的任意路徑。
如果您使用 docker-compose,示例docker-compose.yml
將如下所示:
version: "2.3"
services:
redis:
image: my-altered-redis-image
container_name: my-redis
volumes:
- redis-socket:/run/redis-socket
mynode:
image: my-node-image
container_name: my-node
depends_on:
- "redis"
volumes:
- redis-socket:/run/redis-socket
volumes:
redis-socket:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.