首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何连接到停靠堆栈部署中的容器

如何连接到停靠堆栈部署中的容器
EN

Stack Overflow用户
提问于 2017-04-18 13:32:56
回答 3查看 3.4K关注 0票数 0

我正在尝试使用docker堆栈部署来部署节点应用程序。我想这应该是显而易见的,但是如何从节点应用程序连接到数据库呢?

这是我的样例对接文件-我还没有解决缩放每个服务,只是试图连接所有。给定这个文件,如果我docker stack deploy --compose-file docker-compose.yml dev -那么连接字符串连接节点到mongo的正确mongo地址是什么?

代码语言:javascript
复制
version: '3'

services:
  node: 
    image: rgilling/rsc:latest
    ports:
      - "8080:8080"
    networks:
      - "core"
      - "front"
    logging:
      driver: "json-file"
      options:
        max-size: "500k"
        max-file: "10"
  db1:
    image: mongo:latest
    ports:
      - "27017:27017"
    command: mongod
    networks:
      - core
    logging:
      driver: "json-file"
      options:
        max-size: "500k"
        max-file: "10"
  search1:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.3.0
    environment:
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    cap_add:
      - IPC_LOCK
    volumes:
      - ../../elastic/config/search1.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ../../elastic/config/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties
      - ../../elastic/logs/search1:/usr/share/elasticsearch/logs/search1
      - ../../elastic/data/search1:/usr/share/elasticsearch/data/search1  
    ports:
      - 9200:9200
    networks:
      - core
    logging:
      driver: "json-file"
      options:
        max-size: "500k"
        max-file: "2"
  kibana:
    image: docker.elastic.co/kibana/kibana:5.3.0
    hostname: test-rep
    volumes:
      - ../../kibana/config/systest.yml:/usr/share/kibana/config/kibana.yml
    networks:
      - core
    ports:
      - "5601:5601"
    depends_on: 
      - search1
    logging:
      driver: "json-file"
      options:
        max-size: "500k"
        max-file: "10"
  mail:
    image: mailhog/mailhog
    hostname: test-mail
    networks:
      - core
    ports:
      - "8025:8025"
      - "1025:1025"
    logging:
      driver: "json-file"
      options:
        max-size: "500k"
        max-file: "10"
networks: 
  core:
    driver: overlay
  front:
    driver: overlay 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-18 14:31:23

docker将为每个容器创建一个网络访问名称。在您的例子中,它将是db1

mongodb://user:password@db1/my-database

您还可以将一个links部分添加到您的停靠-组合中,它允许您指定要映射到db1的名称。

https://docs.docker.com/compose/compose-file/#links

代码语言:javascript
复制
node:
  links:
   - db1:mongo-server-name

通常情况下,最好添加links部分,这样停靠者就可以知道哪些容器应该相互连接。

代码语言:javascript
复制
node:
  links:
   - db1

在这种情况下不需要重命名。只需指定node连接到的容器

票数 -3
EN

Stack Overflow用户

发布于 2017-08-22 16:03:54

上面的答案实际上是错误的,在docker堆栈部署中不支持links:,请参阅下面的链接:https://docs.docker.com/compose/compose-file/#not-supported-for-docker-stack-deploy

您可以通过在群集中使用链接容器的服务名称连接到另一个容器,假设两个服务mysql_service和java_service正在群集中运行,然后在java_service容器内尝试ping mysql_service以验证它是否已连接

也可以使用别名为网络中的服务使用可选主机名。

https://docs.docker.com/compose/compose-file/#aliases

票数 0
EN

Stack Overflow用户

发布于 2018-03-06 07:39:42

如果您通过docker stack deploy运行app --一个服务的所有容器都可以看到对方。

因此,要想连接到DB,只需编写:

db1:27017

(其中db1 -是您的DB容器名称)

https://docs.docker.com/compose/compose-file/#deploy

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43473715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档