Docker 从管道部署容器以便traefik 2管理的最佳方法是什么?

Docker 从管道部署容器以便traefik 2管理的最佳方法是什么?,docker,devops,traefik,Docker,Devops,Traefik,我真的很难找到更好的方法来将“上下文化”项目部署到我的服务器上。以下是我的问题描述: 我所拥有的: AWS EC2服务器 Traefik V2使用https管理和路由我的容器(使用Route53 dns服务器) 特拉维斯CI Github 码头中心 以下是我想做的: 我必须在docker文件中设置traefik标签,以便docker compose文件使用此docker文件构建图像(如果在docker compose中设置标签并将其推送到注册表,则不会显示)。 我不认为这是一个很好的设计,可能

我真的很难找到更好的方法来将“上下文化”项目部署到我的服务器上。以下是我的问题描述:

我所拥有的:

  • AWS EC2服务器
  • Traefik V2使用https管理和路由我的容器(使用Route53 dns服务器)
  • 特拉维斯CI
  • Github
  • 码头中心
  • 以下是我想做的:

    我必须在docker文件中设置traefik标签,以便docker compose文件使用此docker文件构建图像(如果在docker compose中设置标签并将其推送到注册表,则不会显示)。 我不认为这是一个很好的设计,可能有更好的方法来解决这个问题

    我想知道的是,如果有人有更好的解决方案

    以下是我的traefik的docker compose(遵循教程的配置):

    下面是一个react项目,我希望使用此配置以及我正在使用的Dockerfile和docker compose:


    更好的解决方案是利用而不是直接在EC2实例上运行Docker容器。ECS是AWS管理的Docker服务,它可以在EC2或Fargate基础设施上运行。通常建议在可用时利用现有云服务,而不是实施传统的本地替代方案

    以下是一个简单的构建/发布工作流:


    此外,我还建议将Docker镜像托管在中,而不是DockerHub,该服务与ECS集成良好。

    谢谢您的建议。我在搜索中经常看到这一点,但我没有看它,因为我才刚刚开始。但据我所知,ECS是一个像库伯内特斯一样的编曲家?如果是这样的话,考虑到你可以在另一个云服务中使用K8s,那么使用K8s不是更好吗?因为有了ECS,你只能使用AWS,对吧?不客气。是的,ECS像Swarm和K8s一样是一个编排器,它是AWS专有的。如果您想使用K8s,您也可以使用AWS EKS(请注意,对于这个特定的用例,K8s是非常过分的)。我不建议在EC2上运行orchestrator;这就破坏了IaaS的许多优势。我建议向云提供商承诺,并利用他们提供的选项,记住没有具有约束力的合同。我不认为ECS能够解决我的问题,因为我使用traefik 2来路由我的容器/服务。我尝试了与jenkins相同的方法,但我的算法将不得不ssh到我的EC2中,我有一个困难的时间。对我来说,这一切似乎都是错误的(构建和部署应用程序)。你能给我一些建议吗?
    version: '3'
    services:
      traefik:
        image: traefik:2.1
        container_name: traefik2
        restart: unless-stopped
        networks:
          - proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - /opt/traefik/traefik.yml:/traefik.yml
          - /opt/traefik/acme.json:/acme.json
        environment:
          # variable for dns server...
        labels:
          - "traefik.enable=true"
          - "traefik.http.routers.traefik.entrypoints=http"
          - "traefik.http.routers.traefik.rule=Host(`domain.info`)"
          - "traefik.http.middlewares.traefik-auth.basicauth.users=user:asdasdasdas"
          - "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
          - "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
          - "traefik.http.routers.traefik-secure.entrypoints=https"
          - "traefik.http.routers.traefik-secure.rule=Host(`domain.info`)"
          - "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
          - "traefik.http.routers.traefik-secure.tls=true"
          - "traefik.http.routers.traefik-secure.tls.certresolver=mgcresolver"
          - "traefik.http.routers.traefik-secure.service=api@internal"
    
    networks:
      proxy:
        external: true