背景
- Cloud Build上でE2Eテストなんかをするときに、たまーに
docker compose
コマンドが使いたくなる - ガイドから辿れるコミュニティ提供のビルダーにはv1用のものしかない
- v1からv2への差分として例えば以下がある
-
docker-compose.yml
だけでなくcompose.yml
もデフォルトで読み込まれるようになった -
compose.yml
でversion
を設定する必要がなくなった -
docker-compose
コマンドでも動くが、dockerのサブコマンドとしてのdocker compose
コマンドが推奨されるようになった - 若干早くなった気がするけど多分気のせい
-
- 妥協してv1のビルダーを使うこともできるが、上記差分をわざわざ古い方に寄せて書くのも癪なので、v2のビルダーを作成する
結論
FROM ubuntu:bionic
ARG DOCKER_COMPOSE_VERSION
# Dockerインストール
RUN apt-get update && apt-get -y install ca-certificates curl docker.io && \
rm -rf /var/lib/apt/lists/*
# Docker Compose V2インストール
WORKDIR /usr/local/libexec/docker/cli-plugins
RUN curl -L https://github.com/docker/compose/releases/download/v${DOCKER_COMPOSE_VERSION}/docker-compose-linux-x86_64 -o docker-compose && chmod +x docker-compose
ENTRYPOINT ["docker", "compose"]
cloudbuild.yaml
substitutions:
_DOCKER_COMPOSE_VERSION: 2.6.1 # 使用したいバージョンに置き換え
steps:
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '--build-arg'
- 'DOCKER_COMPOSE_VERSION=${_DOCKER_COMPOSE_VERSION}'
- '-t'
- 'gcr.io/$PROJECT_ID/docker-compose:latest'
- '-t'
- 'gcr.io/$PROJECT_ID/docker-compose:${_DOCKER_COMPOSE_VERSION}'
- '.'
- name: 'gcr.io/$PROJECT_ID/docker-compose'
args: ['version']
images:
- 'gcr.io/$PROJECT_ID/docker-compose:latest'
- 'gcr.io/$PROJECT_ID/docker-compose:${_DOCKER_COMPOSE_VERSION}'
tags: ['cloud-builders-community']
この2ファイルを作成してgcloud builds submit
すればOK。