明確にするために、私が基本イメージと言うとき、それはすべての共通の構成を持つ親イメージを意味するので、それに基づく子は依存関係を個別にダウンロードする必要はありません。Docker-compose.ymlファイルはベースイメージを作成し、それに基づいて子供を作成しますか?
Docker-compose.ymlファイルは実行時設定ですが、Dockerfilesはビルド時の設定です。ただし、docker-composeを使用しているbuild
オプションがあり、これを使用して基本イメージを構築する方法を知りました。
今のところ、私は他のシェルスクリプトを実行するシェルスクリプトを使用しています。私は自分のイメージを作成したベースイメージから構築します。もう一方は必要な設定でコンテナとして実行します。ただし、基本イメージはコンテナとして実行されることはありません。
現在、私はそうのように見える、ドッキングウィンドウ・コンファイルに変更したいと考えていますシェルスクリプト:次のように
echo "Creating docker network net1"
docker network create net1
echo "Running api as a container with port 5000 exposed on net1"
docker run --name api_cntr --net net1 -d -p 5000:5000 api_img
echo "Running redis service with port 6379 exposed on net1"
docker run --name message_service --net net1 -p 6379:6379 -d redis
echo "Running celery worker on net1"
docker run --name celery_worker1 --net net1 -d celery_worker_img
echo "Running flower HUD on net1 with port 5555 exposed"
docker run --name flower_hud --net net1 -d -p 5555:5555 flower_hud_img
画像を作るシェルスクリプトは、次のとおりです。
echo "Building Base Image"
docker build -t base ../base-image
echo "Building api image from Dockerfile"
docker build -t api_img ../api
echo "Building celery worker image"
docker build -t celery_worker_img ../celery-worker
echo "Building celery worker HUD"
docker build -t flower_hud_img ../flower-hud
私の質問あるものになると、ドッカーの作成でコンテナ内でこの基本イメージを実行することなくこのベースイメージを作成できますか? (すべてのDockerファイルは、ベース自体以外のFROM base:latest
で始まります)。私はできるだけ簡単に他の人に見せたいので、1つのコマンドを実行するだけです。
編集:私はバージョン3を使用しており、ドキュメントによればbuild:
は無視され、ドッカー作成は事前構築されたイメージのみを受け入れます。
最初にベースイメージを作成し、別のコマンドでドッカーを作成して、1つのコマンドを実行する場合はシェルスクリプトを実行してください。 –
@WillParzybokそれは良いアイデアとあなたの目的に適しているようです。 – Ayushya
それは私がしていることです。ジェンキンスは自分のベースイメージを作成し、それをプライベートイメージリポに入れます。バージョン番号で正しくタグ付けすると、常にコントロールが得られます。対処するのはかなり単純なプロセスです。 – Grimmy