首页 > 解决方案 > 如何使用 Gitlab CI 单独部署 docker 微服务并允许它们对话?

问题描述

我正在尝试创建一个能够使用 docker 部署的微服务系统,并且我遇到了一些我希望得到帮助的概念障碍。所以我的每个微服务都运行在 Python 的 Nameko 框架上,以 RabbitMQ 作为消息代理,每个服务都在自己的 git repo 中。我试图弄清楚如何为每个服务创建一个 gitlab CI 部署系统,这样当主服务器更改时,对于任何特定服务,容器都会重建并自动部署到我的 docker swarm我目前对 gitlab CI 配置的尝试

stage: 
  - build
  - deploy

build:  
  image: docker
  variables: 
    REG_HOST: 'local-registry-url'

  script:
    - docker login to local image repo
    - docker build -t $REG_HOST/$SOME_TAG
    - docker push $REG_HOST/$SOME_TAG

deploy: 
  image: docker
  script:
    - docker login to local image repo
    - docker stack deploy --with-registry-auth --compose-file=docker-stack-compose.yml

  only:
    - master

我正在为docker-stack-compose.yml每个服务创建一个新的,但我不确定如何定义我的所有服务所依赖的依赖项,例如 rabbitMQ 而不在我的每个服务中重新定义它docker-stack-compose.yml,甚至可以工作吗?另外,我如何将它们全部放在同一个网络上?

这是我当前正在进行的测试服务撰写文件的样子:

version: '3'
services:
  test:
    container_name: io-test
    image: local-registry-url/service-name
    tty: true
    ports: 
      - '8000:8000'
    depends_on:
      - rabbitmq
    networks:
      - service-net
    deploy:
      mode: replicated
      replicas: 2

networks:
  default:
    external: service-net

对此的任何帮助将不胜感激。

标签: pythondockerdocker-composegitlab-cinameko

解决方案


推荐阅读