将多个docker映像分组为一个映像,并进行通信

时间:2018-07-24 22:33:45

标签: docker docker-compose

我之所以来找你,是因为我有一个问题,我什至不知道从哪里开始解决。

实际上,我有3个必须彼此通信的图像泊坞窗。

前端的图像,必须与后端的图像进行通信,该图像也必须与我的数据库的图像进行通信(MySQL )。

当我输入http://localhost:9090时,我想访问我的前端,该前端应该与后端通信,该后端必须通过与数据库

我查看了docker-compose文档,但他们解释了docker-compose关键字,而没有示例说明如何解决此类问题。

如果您有很好的教程,博客或代码说明如何解决我的问题,请帮助我。

2 个答案:

答案 0 :(得分:1)

您可以构建一个docker-compose.yml来做到这一点:

version: '2'

services:
  database:
    image: <image>:<tag>
    container_name: database
    restart: unless-stopped

  backend:
    image: <image>:<tag>
    container_name: backend
    restart: unless-stopped
    volumes:
    links:
      - database

  frontend:
    image: <image>:<tag>
    container_name: frontend
    restart: unless-stopped
    links:
      - backend
    ports:
      - "9090:9090" # the first port is what your app listens on

然后运行docker-compose up

答案 1 :(得分:0)

谢谢您的回答。我测试了您的解决方案是否有效,但是有必要像这样暴露图像后端和数据库的所有端口:

version: '2'

services:
  database:
    image: data
    container_name: database
    restart: unless-stopped
    ports:
      - "3306:3306"
  backend:
    image: backend
    container_name: backend
    restart: unless-stopped
    links:
      - database
    ports:
      - "8090:8090" 
      - "8091:8091"
      - "8092:8092"  
  frontend:
    image: frontend
    container_name: frontend
    restart: unless-stopped
    links:
      - backend
    ports:
      - "9090:9090"

并且如果我在浏览器中键入URL后端,例如localhost:8090,则该URL会回答我,而我想一定要经过前端以访问后端。

所以对我来说,想法是后端和数据库的端口只能在docker-compose内部可见,但是我不知道如何使用docker-compose

预先感谢您的帮助。