こんにちは
Docker Composeで新しいアプリを作成し、アップデートしたいと考えています。
現在、「再作成」する必要があり、アプリは一度削除されて再作成されます。
なぜ、Dockerの–buildフラグのようにアプリをアップデートするオプションがないのでしょうか?その方法なら、アプリの作成がより速くなり、更新されたコンポーネントだけが再作成されます。
ありがとうございます!
こんにちは
Docker Composeで新しいアプリを作成し、アップデートしたいと考えています。
現在、「再作成」する必要があり、アプリは一度削除されて再作成されます。
なぜ、Dockerの–buildフラグのようにアプリをアップデートするオプションがないのでしょうか?その方法なら、アプリの作成がより速くなり、更新されたコンポーネントだけが再作成されます。
ありがとうございます!
やるべきことがいくつかあります。
1.) dockerリポジトリ項目を指定する際は、タグを使って希望するバージョンを確実に指定してください。例えば、以下は私のSmokePing用のcomposeファイルです。「smokeping:latest」と記載しているのが分かると思います。新しいバージョンがあれば、リポジトリ管理者がタグを正しく設定していれば、それをプルするはずです。
しかし…(composeファイルの後をご覧ください)…
smokeping:
image: lscr.io/linuxserver/smokeping:latest
container_name: smokeping
hostname: smokeping #オプション
networks:
qnet-network:
ipv4_address: 192.168.1.3
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- MASTER_URL=http://192.168.0.3:80/smokeping/ #オプション
- CACHE_DIR=/tmp #オプション
volumes:
- /share/Container/somokeping/config:/config
- /share/Container/smokeping/data:/data
ports:
- 80:80
restart: unless-stopped
networks:
qnet-network:
driver_opts:
iface: eth3
driver: qnet
ipam:
driver: qnet
options:
iface: eth3
config:
- subnet: 192.168.0.0/23
gateway: 192.168.1.1
2.) タグが正しくても、QNAP(キューナップ)は必ずしもそれをプルしてくれない場合があります。これは、すでに「smokeping:latest」と認識しているイメージのコピーを持っているためです。ContainerStationの「イメージ」へ行き、保存されているイメージを削除する必要があります。下のスクリーンショットでは、「smokeping:latest」という名前のイメージがあるので、実際にリポジトリの最新ビルドをプルしない可能性があります。それを削除し、再構築すれば問題なく進めるはずです。
ここで重要なのは、Compose(コンポーズ)を使用し、コンテナのデータストレージを自分で管理することです。
この方法なら、コンテナを作成、削除、再構築しても、データや設定を失うことはありません。
また、recreateで常にイメージを更新したい場合は、以下の行をcomposeファイルに追加できます。これにより、Container Stationが常にイメージをダウンロードするようになります。
pull_policy: always
古いイメージを削除するために、定期的にイメージをプルーンすることを忘れないでください。
これを知る前は、新しいイメージをダウンロードしてから再作成するなどの作業が必要でしたが、これで自動化されたプロセスになります。
おおっ!これは素晴らしいです!ありがとうございます!
私は、コンテナを監視するDockerイメージであるWUDも運用しています。そのため、pull alwaysでrecreateが機能することと合わせて、Container Station上でコンテナの管理がとても簡単です。
みなさん、本当にありがとうございます!!