首页 > 解决方案 > 如何在启用 swarm 的情况下使用 traefik 处理两个单独的 docker-compose 文件

问题描述

我有两个不同的 docker-compose 文件,它们具有不同的服务(项目空间),我想在同一个 swarm 上运行,因为我想使用 traefik 作为反向代理,我该怎么做?

标签: docker-composedocker-swarmtraefik

解决方案


在部署到 swarm 之前,您必须使用通用镜像注册表和预构建镜像:

第一个撰写文件:

services:
    my_service:
        build: ./my_service
        image: my-registry-host/my_service:latest
        ...

第二个撰写文件:

services:

    my_other_service:
        build: ./my_other_service
        image: my-registry-host/my_other_service:latest
        ...
    my_service:
        image: my-registry-host/my_service:latest
        ...

    traefik:
        image: traefik:v2.0
        ...

当您在第一个文件中构建服务时,它们会上传到您的公共注册表my-registry-host。当您部署第二个文件时,您将看到该映像将从公共注册表中获取,并且堆栈按预期运行。


推荐阅读