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

时间:2019-12-12 18:16:52

标签: docker docker-compose circleci

在我的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 hub?

2 个答案:

答案 0 :(得分:3)

您应该用两个词为所需的服务构建映像并将其推送到docker hub。

您可以使用类似的命令

    ...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图片网址相同。

在这些文章中阅读更多内容:

答案 1 :(得分:3)

如果您是在circleci上构建的,则不必从docker compose进行构建。 您只需向circleci配置(.circleci / config.json)添加步骤即可构建并推送图片。 该文件看起来可能像这样:

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构建设置中