如何在一个 CircleCI 配置中构建两个?
How to make two build inside one CircleCI configuration?
在我的 git 存储库中,我有 docker-compose.yml
和两个文件夹 frontend
和 backend
,每个文件夹都包含其 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 构建设置
在我的 git 存储库中,我有 docker-compose.yml
和两个文件夹 frontend
和 backend
,每个文件夹都包含其 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 构建设置