ビルドコンテキストを含むシンプルな Docker Compose プロジェクトの準備
このステップでは、ビルドコンテキストを含むシンプルな Docker Compose プロジェクトを準備します。ビルドコンテキストとは、Docker イメージをビルドするために Docker デーモンに送信される指定場所(PATH または URL)のファイルセットです。Dockerfile とそれが必要とするファイル(アプリケーションコードなど)はビルドコンテキスト内に存在する必要があるため、これは重要です。
まず、プロジェクト用のディレクトリを作成します。my-watch-app
という名前にします。
mkdir ~/project/my-watch-app
cd ~/project/my-watch-app
次に、シンプルなアプリケーションファイルを作成します。メッセージを表示する基本的な Python スクリプトを使用します。
nano app.py
app.py
に以下の内容を追加します:
print("Hello from the Docker container!")
ファイルを保存して閉じます(Ctrl+X、Y、Enter)。
次に、アプリケーション用のイメージをビルドする Dockerfile を作成します。Dockerfile は Python スクリプトをイメージにコピーし、実行します。
nano Dockerfile
Dockerfile に以下の内容を追加します:
FROM python:3.9-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]
この Dockerfile は、ベースイメージとして slim 版の Python 3.9 を使用し、作業ディレクトリを/app
に設定し、app.py
を/app
ディレクトリにコピーし、コンテナ起動時に Python スクリプトを実行するコマンドを設定します。
最後に、サービスを定義するdocker-compose.yaml
ファイルを作成します。このファイルは Docker Compose にアプリケーションのビルドと実行方法を指示します。
nano docker-compose.yaml
docker-compose.yaml
に以下の内容を追加します:
version: "3.8"
services:
myapp:
build: .
volumes:
- .:/app
このdocker-compose.yaml
ファイルはmyapp
という名前のサービスを定義しています。build: .
命令は、カレントディレクトリ(ビルドコンテキスト)にある Dockerfile を使用してイメージをビルドするよう Docker Compose に指示します。volumes: - .:/app
行は、ホストマシンのカレントディレクトリ(.
)をコンテナ内の/app
ディレクトリにマウントします。これはdocker compose watch
にとって重要で、ホスト上の変更がコンテナ内に反映されるようになります。
では、Docker Compose を使用してサービスをビルド・実行し、すべてが正しく設定されていることを確認しましょう。Docker Compose がプリインストールされていないため、まずインストールする必要があります。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
これでdocker-compose
を使用できます。
docker-compose up --build
イメージがビルドされ、コンテナが実行され、"Hello from the Docker container!"と表示される出力が表示されるはずです。コンテナを停止するにはCtrl+C
を押します。