首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法使用docker-compose文件而不使用docker-swarm-mode来连接2个docker

有没有办法使用docker-compose文件而不使用docker-swarm-mode来连接2个docker
EN

Stack Overflow用户
提问于 2020-04-22 11:40:38
回答 2查看 42关注 0票数 0

我想用Docker运行一个webapp和一个数据库,有没有办法用docker-compose文件连接两个Docker (webApp Docker容器在一台机器上,db docker容器在另一台机器上),我是说两台独立的服务器这是我的Mongodb docker-compose文件

代码语言:javascript
复制
version: '2'
services:
  mongodb_container:
    image: mongo:latest
    restart: unless-stopped
    ports:
      - 27017:27017
    volumes:
      - mongodb_data_container:/data/db

这是我的demowebapp docker-compose文件

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

services:
  demowebapp:
    image: demoapp:latest
    restart: unless-stopped
    volumes:
      - ./uploads:/app/uploads
    environment:
      - PORT=3000
      - ROOT_URL=http://localhost
      - MONGO_URL=mongodb://35.168.21.133/demodb
    ports:
      - 3000:3000

有谁能建议我怎么做吗?

EN

回答 2

Stack Overflow用户

发布于 2020-04-22 13:55:29

只使用一个带有compose version: 2docker-compose.yml,就无法在两台不同的机器上部署两个服务。这就是使用stack.yml和群组模式的version: 3的用途。

但是,您可以使用两个docker-compose.yml版本2部署到两台不同的计算机,但必须使用不同的主机名/ips连接它们,而不是使用组合文件中的服务名。

票数 0
EN

Stack Overflow用户

发布于 2020-04-22 19:40:50

您不需要更改所显示的示例文件中的任何内容:您必须连接到另一台主机的IP地址(或DNS名)和发布的ports:

一旦你在不同的机器上(或在不同的VM中),围绕Docker的任何细节都不再可见。从运行Web应用程序的系统的角度来看,第一个系统在端口27017上运行MongoDB;它可能在裸机上运行,或者在容器中运行,或者从VM转发端口,或者使用HAProxy之类的东西从另一个系统通过;从字面上讲无法判断。

您必须连接到第一台服务器的IP地址的配置将有效。如果您还没有DNS系统(BIND、AWS Route 53等),我会设置一个DNS系统。以避免需要对IP地址进行硬编码。你可能还会看到一个服务发现系统(我以前在Hashicorp的领事那里很走运),它可以把你送到“运行MongoDB的主机系统”,而不需要知道是哪一个。

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

https://stackoverflow.com/questions/61356919

复制
相关文章

相似问题

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