0Pricing
DevOps Bootcamp · レッスン

複数サービスアプリのデプロイ

Docker Composeを使い、データベースとバックエンドサービスを含むフルスタックアプリケーションをデプロイします。

「複数サービスアプリのデプロイ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

複数サービスのアプリをデプロイする

ようこそ!このレッスンでは、Docker Composeを使ってフルスタックアプリケーションをオンラインで稼働させる方法を学びます。

Webアプリやデータベースなど複数のサービスを定義し、それらをまとめてデプロイ・管理する方法を見ていきます。

複数サービスアプリのデプロイ — イラスト1

例: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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Docker Composeとは
  2. Composeファイルの記述
  3. 複数サービスアプリのデプロイ
  4. 環境変数と.envファイル
← DevOps Bootcampに戻る