如何连接单独的码头集装箱



我已经构建了node、elastical search和mongo三个docker镜像。然后把它们推到码头枢纽。在提取这些图像之后,我使用命令dockerrun来运行它们。它们正在成功运行。但node应用程序无法连接到mongo或elastic。我试过创建一个网络并将容器添加到其中,但没有帮助。有人能就这个问题提供帮助吗?

这取决于各个容器运行的位置。如果它们在同一台主机上运行,您可以将它们连接到同一个网桥网络。请参阅此处:https://docs.docker.com/network/bridge/

如果它们在不同的主机上运行,则必须使用主机网络并公开相关端口。请参阅此处:https://docs.docker.com/network/host/

使用多个容器时,最好使用Docker compose。您可以在那里创建一个定义服务(容器(的docker-compose.yml文件。

以下是node、mongo和elasticsearch 的docker-compose.yml示例

version: "3"
services:
backend:
container_name: nodejs
restart: always
build: node
ports:
- "3010:3010"
volumes:
- .:/app
- ./error.log:/usr/src/app/error.log
links:
- mongo
- elasticsearch
mongo:
container_name: mongo
image: mongo
ports:
- "27017:27017"
volumes:
- ./data:/data/db
elasticsearch:
container_name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:7.0.0
environment:
- node.name=es01
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
volumes:
-  esdata:/usr/share/elasticsearch/data
ports:
- "9200:9200"    
volumes:
esdata:
driver: local

你的问题不清楚,所以我只能回答

最新更新