如何在Bitbucket Pipelines中使用docker compose V2

问题描述 投票:0回答:2

传统上,我一直在发行

pip install docker-compose

我的管道脚本中有关需要它的步骤的说明,通常用于集成测试。

这很方便,因为它可以完美地与 Bitbucket 的 docker 服务提供的 docker 二进制文件一起运行,并且受益于 pip 缓存,因为我已经在这些步骤中使用了 python 图像。但我宁愿使用最新的软件,所以我正在寻找安装 docker-compose V2 的机制。

理想情况下,解决方案应该

  • 不安装另一个 docker 二进制文件,而是重用 Bitbucket 的 docker 服务提供的二进制文件
  • 不需要特定的运行时(不像 V1 需要 python)
  • 受益于某种缓存,以避免在每个管道上下载撰写插件。

有人解决这个问题吗?你的经验是什么?

docker-compose bitbucket-pipelines
2个回答
2
投票

让它工作的一种方法是从 github 下载最新版本,将其放入 ~/.docker/cli-plugins 并缓存此文件夹。

definitions:
  caches:
    docker-cliplugins: ~/.docker/cli-plugins
  yaml-anchors:
    - &setup-docker-compose-latest-script >-
        wget --no-verbose --no-clobber https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 --output-document ~/.docker/cli-plugins/docker-compose
        || true
        ; chmod a+x ~/.docker/cli-plugins/docker-compose
        && ln --symbolic ~/.docker/cli-plugins/docker-compose /usr/local/bin/docker-compose
pipelines:
  default:
    - step:
        services: [docker]
        caches: [docker-cliplugins]
        script:
          - *setup-docker-compose-latest-script
          - docker compose version

这需要

wget --no-clobber
才能从缓存中受益。

理想情况下,这可以通过管道以可重用的方式完成,就像使用“设置”github 操作一样。但因为管道仅挂载克隆目录而不是整个代理,所以这里有这个 yaml 锚点。


0
投票

您可以使用atlassian/default-image:4,它已经安装了docker compose V2:https://hub.docker.com/r/atlassian/default-image/

image: atlassian/default-image:4
pipelines:
  default:
    - parallel:
        - step:
            name: Unit Tests
            services:
              - docker
            caches:
              - docker
              - pip
            script:
              - export DOCKER_BUILDKIT=0
              - source .env_example
              - docker-compose build

© www.soinside.com 2019 - 2024. All rights reserved.