如何在一个 CircleCI 配置中构建两个?

How to make two build inside one CircleCI configuration?

在我的 git 存储库中,我有 docker-compose.yml 和两个文件夹 frontendbackend,每个文件夹都包含其 Dockerfile。

docker-compose.yml:

version: "3.5"

services:
  Django:
    build:
      context: backend
    ...

  react:
    build:
      context: frontend
    depends_on:
      - django

master 分支中发现新提交后,如何配置将它们构建到映像中并将它们一起推送到 docker 中心?

简而言之,您应该为您想要的服务构建映像并将它们推送到 docker 中心。

您可以使用

这样的命令来完成
    ...env configuration in your CI...
    - DOCKER_ACC=my_account_name
    - DOCKER_REPO_DJANGO=django-app
    - DOCKER_REPO_REACT=django-app

    ... post tests commands ...
    - echo $DOCKER_PWD | docker login -u $DOCKER_LOGIN --password-stdin
    - docker build -t $DOCKER_ACC/$DOCKER_REPO_DJANGO:latest -f ./path/to/Dockerfile.django .
    - docker push $DOCKER_ACC/$DOCKER_REPO_DJANGO:latest

    - docker build -t $DOCKER_ACC/$DOCKER_REPO_REACT:latest -f ./path/to/Dockerfile.django .
    - docker push $DOCKER_ACC/$DOCKER_REPO_REACT:latest

其中 latest 您可以替换为您的分支名称、提交标记等,并为您的应用构建多个图像版本。

一切取决于你,这非常灵活。但是您必须执行 2 个步骤 - 构建图像并推送它们。内置图片标签应等于您的 github 图片网址。

阅读更多此类文章:

如果您在 circleci 上构建,则不必从 docker compose 构建。 您只需将步骤添加到 circleci 配置 (.circleci/config.yml) 即可构建和推送图像。 该文件可能看起来像这样:

version: 2

jobs:

 build:
   docker:
    - image: docker:19.03.5

   working_directory: [YOUR REPO WORKING DIR]

   steps:
    - checkout
    - setup_remote_docker

    - run:
       name: build frontend
       command: docker build -t [FE DOCKER REPO NAME]:tag -f [FE DOCKERFILE PATH] .

    - run:
       name: build backend
       command: docker build -t [BE DOCKER REPO NAME]:tag -f [BE DOCKERFILE PATH] .

    - run:
       name: push frontend
       command: |
         docker login -u $DOCKER_USER -p $DOCKER_PASS
         docker push [FE DOCKER REPO NAME]:tag

    - run:
       name: push backend
       command: |
         docker login -u $DOCKER_USER -p $DOCKER_PASS
         docker push [BE DOCKER REPO NAME]:tag

请注意,您必须将 DOCKER_USER 和 DOCKER_PASS 环境变量添加到您的 circleci 构建设置