【问题标题】:connect two application running separatly on docker-compose连接在 docker-compose 上单独运行的两个应用程序
【发布时间】:2018-06-09 13:49:00
【问题描述】:

我有一个带有 mysql (chatbot) 的 django 应用程序和带有 mongodb 的 rails 应用程序,每个都在 docker-compose 上运行 他们都单独运行 我想把它们连接在一起,我该怎么做???

我的带有 rails 的 docker-compose 文件

#with rails on the dockerfile
version: '3.6'
services:
  db:
    image: mongo:latest
    volumes:
      - ./tmp/db:/var/lib/mongo/data
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/IMS
    ports:
      - "3000:3000"
    depends_on:
      - db
  bundle:
    image: ims_web
    volumes:
      - /bundle

django 项目:

#with django on the dockerfile
version: '3.6'
services:
  db:
    image: mysql:latest
    volumes:
      - ./tmp/db:/var/lib/mysql/data
  web:
    build: .
    command: bundle exec rails s -p 4000 -b '0.0.0.0'
    volumes:
      - .:/SDV
    ports:
      - "4000:4000"
    depends_on:
      - db
  bundle:
    image: sdv_web
    volumes:
      - /bundle

【问题讨论】:

  • 你能提供你的 docker-compose 文件吗?您可以通过主机名在两者之间进行引用,主机名由您的服务名称定义(例如,mongodb:\\mongo-service)
  • 我编辑了帖子并添加了它们

标签: ruby-on-rails python-3.x docker docker-compose


【解决方案1】:

您只需要确保要相互通信的容器位于同一网络上。 您需要在 docker compose 文件中创建自定义网络。

更多参考可以参考https://docs.docker.com/compose/networking/

Communication between multiple docker-compose projects

【讨论】:

    【解决方案2】:

    如果这些应用程序要一起运行,我建议在此处合并您的 docker-compose 文件并使用唯一名称标识每个服务(即,不要重复服务名称,将它们称为 mongo-db 和 mysql-db或其他东西——与网络服务相同)。

    此时,只要您的所有服务共享一个公共网络,您就可以通过使用服务名称作为主机名进行互通。例如,您可以通过http://rails-web/django-web 访问新的rails-web 服务。

    查看 Hemant 对 Docker 网络文档的回答。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      相关资源
      最近更新 更多