使用中の環境
Docker version 20.10.11
docker-compose version 1.29.2
ホストOS: Ubuntu 20.04LTS
※: 使用中の IaC が対応していない事情で、 Docker Compose CLI (v2) が使用できません
目的
雑に docker-compose でサービスを動かしている環境で、 イメージの取得と再ビルドを行い、 その結果いずれかのイメージに更新があればコンテナの再起動を、定期的に自動で行いたいと考えています。
イメージをビルドするマシンと、コンテナを実行するマシンは同じです。
前提状況
docker-compose.yml
では、以下のようにイメージを直接利用するものと、手元でビルドして利用するものが混在しています。
services: aaa1: build: ./aaa aaa2: build: ./aaa bbb: image: alpine:latest
FROM alpine:latest RUN apk add --no-cache jq
試した事
イメージを直接利用するものについては、以下のように標準出力から新イメージの取得の有無で判別できそうだという事までたどり着きました。
shell
1$ docker-compose pull --no-parallel | grep "Downloaded newer image"
一方、自前でビルドするほうについては、 docker-compose build --pull
と実行した場合に、最終イメージがキャッシュされたかに関わらず、以下のようになってしまうため、更新されたイメージが作成されたかどうかの判別ができずに悩んでいます。
Successfully built xxxxxxxxxxxx Successfully tagged dir_aaa1:latest
質問
docker-compose で build した結果、新しいイメージが作成されたかどうかを取得する方法はありませんか?
上述の理由から、 新イメージの取得・ビルド後の新しいイメージの有無・再起動 をワンライナーで書けるのが望ましいです。
また、 この更新コードは cron 実行したいので、 /bin/sh (POSIX シェル) で動いた方が少しうれしいですが、 bash でも構いません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。