複数サービスアプリのデプロイ
Docker Composeを使い、データベースとバックエンドサービスを含むフルスタックアプリケーションをデプロイします。
「複数サービスアプリのデプロイ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
複数サービスのアプリをデプロイする
ようこそ!このレッスンでは、Docker Composeを使ってフルスタックアプリケーションをオンラインで稼働させる方法を学びます。
Webアプリやデータベースなど複数のサービスを定義し、それらをまとめてデプロイ・管理する方法を見ていきます。

例:WebとDB
データベースに接続するシンプルなWebアプリケーションをデプロイします。これは実際の多くのアプリケーションでよく使われる構成です。
- Webサービス:基本的なWebページを提供するPython Flaskアプリケーションです。
- データベースサービス:データを保存するPostgreSQLデータベースです。
Docker Composeを使えば、この2つのサービスを簡単にオーケストレーションできます。
Webイメージを作成する
Webサービスには専用のDockerイメージが必要です。次は、Python Flaskアプリケーションをビルドする簡略化したDockerfileです。
FlaskとPostgreSQLコネクターをインストールし、その後app.pyを実行します。
FROM python:3.9-slim-buster
WORKDIR /app
COPY . /app
RUN pip install --no-cache-dir flask psycopg2-binary
EXPOSE 5000
CMD ["python", "app.py"]`docker-compose.yml`
このdocker-compose.ymlファイルでは、webとdbという2つのサービスを定義しています。webサービスがDockerfileからビルドされ、環境変数を使ってdbサービスに接続している点に注目してください。
version: '3.8'
services:
web:
build: .
ports:
- "5000:5000"
environment:
DB_HOST: db
DB_NAME: mydatabase
DB_USER: user
DB_PASSWORD: password
depends_on:
- db
db:
image: postgres:13
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:サービスを起動する
docker-compose.ymlファイルで定義したすべてのサービスを起動するには、docker compose upコマンドを使用します。
-dフラグを付けると、コンテナは「デタッチ」モードで実行されます。つまり、バックグラウンドで実行されます。
# This command starts your multi-service app
# and runs it in the background.
docker compose up -d実行中のコンテナを確認する
docker compose up -dを実行したら、すべてのサービスが想定どおり実行されているか確認しましょう。
docker compose psコマンドを使うと、サービス、ステータス、ポートの一覧が表示されます。
# Check the status of your services
docker compose psアプリに接続する
サービスが実行されていれば、Webアプリケーションにアクセスできます。
- Webブラウザーを開きます。
http://localhost:5000に移動します。
Flaskアプリからメッセージが表示され、PostgreSQLデータベースへの接続が確認できるはずです。
サービスをスケーリングする
Docker Composeの強力な機能の1つが、サービスのスケーリングです。Webアプリでより多くのトラフィックを処理する必要がある場合、Webサービスのインスタンス数を簡単に増やせます。
docker compose upとともに--scaleフラグを使用します。
# Scale the 'web' service to 3 instances
docker compose up --scale web=3 -dサービスを停止・削除する
アプリケーションの使用を終えたら、docker-compose.ymlで定義したすべてのサービスとネットワークを停止して削除できます。
docker compose downコマンドを使えば、このクリーンアップを実行できます。
# Stop and remove all services
docker compose downクイックチェック
ここまで使用してきたdocker-compose.ymlについて考えてみましょう。先ほどdocker compose up -dでアプリケーションを起動しました。
実行中のすべてのサービスと、それに関連付けられたリソースを停止して削除する主なコマンドは何でしょうか。
復習と次のステップ
よくできました!Docker Composeを使って複数サービスのアプリケーションをデプロイし、管理する方法を学びました。
docker-compose.ymlでサービスを定義しました。docker compose up -dでサービスを起動しました。docker compose psでステータスを確認しました。- サービスをスケーリングし、
docker compose downでクリーンアップしました。
これは、複雑なアプリケーションをローカルで開発・テストするための基本的なスキルです。
よくある質問
「複数サービスアプリのデプロイ」レッスンは無料ですか?
はい。「複数サービスアプリのデプロイ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「複数サービスアプリのデプロイ」で何を学びますか?
Docker Composeを使い、データベースとバックエンドサービスを含むフルスタックアプリケーションをデプロイします。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「複数サービスアプリのデプロイ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Docker Composeとは
- Composeファイルの記述
- 複数サービスアプリのデプロイ
- 環境変数と.envファイル