首页 文章

Gitlab CI / CD,Docker Compose和应用程序

提问于
浏览
0

我有一个问题问你 .

我最近进入了CI / CD,对我来说一个很好的起点是Gitlab,因为它们提供了一个简单的界面,我开始讲述管道和阶段是什么,但我遇到了一些关于Gitlab CI的矛盾思想在Docker上运行 .

我的应用程序在Docker Compose上运行 . 它包含(等等),可以轻松构建和运行容器 . Docker Compose中的每个服务都创建了一个Docker容器,除了php-fpm之外,它可以做一个名为“水平扩展”的东西,所以我可以稍后扩展它 .

我将使用Docker Compose进行 生产环境 ,我目前正在开发中使用它,我也希望在CI / CD管道中使用它 .

However the .gitlab-ci.yml provides support for only one image, so I have to build it and push it to either their Gitlab Registry or Docker Hub in order to pull it later in the CI/CD process.

How can I build my Docker Compose's service as a single image in order to push it to the Registry/Docker so I can pull it in the CI/CD?

我的项目包含一个docker文件夹和一个docker-compose.yml . 在docker文件夹中,每个服务都有自己独立的目录(php-fpm,nginx,mysql等),每一个(自己准备)包含一个带有构建细节的Dockerfile,特别是php-fpm(deps和libs很强)用这一个)

docker-compose.yml中的每个服务都在其自己的每个文件夹中都有一个构建上下文 .

如果我不清楚,我可以提供额外的信息(免费)

2 回答

  • 0

    您不需要 dind 来运行docker-compose堆栈 . 您可以运行多个 docker-compose up 命令 .

    acceptance_testing:
      stage: test
      before_script:
        - docker-compose -p $CI_JOB_ID up -d
      script:
        - docker-compose -p $CI_JOB_ID exec -T /run/your/test/suite.sh
      after_script:
        - docker-compose -p $CI_JOB_ID down -v --remove-orphans || true
    
  • 0

    我想你会搜索这样的东西

    # .gitlab-ci.yml
    
    image: docker
    
    services:
      - docker:dind
    
    build:
      script:
        - apk add --no-cache py-pip
        - pip install docker-compose
        - docker-compose up -d
    

    也很好知道:

相关问题