在我的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 hub?
答案 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构建设置中