プロジェクト

Docker Composeとは何ですか?

Docker Composeは、Docker向けに設計されたツールであり、マルチコンテナアプリケーションを定義・管理することで、複雑なアプリケーションのデプロイと管理を簡素化します。簡単に言えば、アプリケーションの複数のサービス、ネットワーク、ストレージ構成を単一のYAMLファイルで記述し、1つのコマンドですべてのサービスを起動できるようにします。UGOS Pro上で複数のアプリケーションを実行している場合や、デプロイプロセスを効率化したい場合には、Docker Composeは必須のツールです。

適用可能なシナリオ

UGOS Pro での Docker Compose の使用は、主に以下のシナリオに適しています:

マルチサービスアプリケーションの管理

NAS上でウェブサーバー、データベース、キャッシュ、リバースプロキシなど複数のサービスで構成される複雑なアプリケーションを実行する場合、Docker Composeを使用するとこれらのサービスを単一の設定ファイルに統合し、統一的な管理とメンテナンスが可能になります。

  • 例:典型的なWordPressプロジェクトには、WordPressコンテナとMySQLコンテナが含まれます。Composeを使用すると、両サービスの接続設定を正しく構成しながら、両サービスを同時に起動できます。

アプリケーションデプロイの簡素化

Docker Composeファイルを使用すると、コンテナ化されたアプリケーションに必要なすべてのサービス、ネットワーク、ストレージを定義できます。定義されたすべてのサービスを単一のコマンドで起動することで、Docker Composeはサービスの依存関係を自動的に管理し、Dockerインターフェースを介した複雑なアプリケーションのデプロイプロセスを効率化します。

アプリケーションの移植性

Docker Composeはコンテナ化アプリケーションの高い移植性を実現します。アプリケーション全体の設定をComposeファイルにパッケージ化し、異なるUGOS Proデバイスに迅速にデプロイすることで、一貫性と効率性を確保できます。

Docker Composeファイルの構造

Docker Composeファイルは通常docker-compose.yamlという名前で、YAML構文を使用してサービス、ネットワーク、ストレージを定義します。基本的なComposeファイルの構造は以下の通りです:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "90:80"
    volumes:
      - ./html:/usr/share/nginx/html

  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydatabase
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - ./data:/var/lib/mysql
  • version: Docker Compose ファイルのバージョンを定義します。

  • services: アプリケーション内のサービスを指定します。この例では、 webdb の2つのサービスが定義されています。

  • image: サービスで使用する Docker イメージを指定します(例: nginxmysql)。

  • ports: ホストとコンテナ間のポートをマッピングします。例えば、 90:80 は NAS ホストのポート 90 をコンテナのポート 80 にマッピングし、 NAS_IP:90 経由でコンテナにアクセスできるようにします

  • volumes: データの永続化のために、NASストレージディレクトリをコンテナディレクトリにマッピングします。

  • environment: コンテナ内のサービス向けに環境変数を設定します。データベースパスワード、APIキー、その他の設定オプションなどが該当します。

環境変数の説明

この例では:

  • MYSQL_ROOT_PASSWORD: MySQL データベースの root パスワードを example に設定します

  • MYSQL_DATABASE: mydatabase という名前のデータベースを作成します

  • MYSQL_USER: ユーザー名 user のデータベースユーザーを作成します

  • MYSQL_PASSWORD: 上記ユーザーのパスワードを password に設定します

これらの環境変数はコンテナ起動時にMySQLサービスに渡され、データベースの初期化に使用されます。

ボリュームマウントの仕組み

Docker Compose ファイル内の ./html:/usr/share/nginx/html はボリューム設定であり ./ は Docker Compose ファイルが置かれているディレクトリを表します。

  • ./html: この文脈では、 ./ は Docker Compose ファイルが置かれているディレクトリを表します。具体的には、 ./html は UGOS Pro 上のディレクトリ、つまり Docker Compose ファイルと同じディレクトリの下にある html サブディレクトリ を指します

  • /usr/share/nginx/html: コンテナ内のディレクトリを指します。Nginxコンテナの場合、静的ウェブサイトファイルのデフォルトパスです。

この設定により、Dockerは ホスト上の ./ htmlディレクトリを コンテナ内の/usr/share/nginx/htmlマウントし 、以下のことを可能にします:

  • ホストの ./html ディレクトリ で行われた変更が 、コンテナの /usr/share/nginx/html即時反映される

  • コンテナ内で変更を加えた内容がホストの ./html ディレクトリに同期される

関連リンク: Docker Compose設定ファイルでボリュームマウントパスを正しく指定する方法

UGOS ProでDocker Composeを使用する方法

UGREEN NAS上でホームメディアセンターを運用していると仮定します。Docker Composeを使用すれば、Jellyfin(メディアサーバー)、MariaDB(データベース)、Redis(キャッシュ)などのサービスを管理できます。単一の docker-compose. ymlファイル 、これらのサービスの依存関係、ボリュームマウント、ネットワーク設定を定義し、シンプルなコマンドでメディアセンター全体を管理できます。

操作手順:

1. プロジェクトの作成

UGOS ProでDockerアプリケーションを開き、「プロジェクト」「作成」をクリックし、以下の詳細を入力します:

  • 名前: プロジェクト名を入力

  • ストレージパス: Docker Compose設定ファイル(docker-compose.yaml)を保存するパスを指定します。

  • Compose設定: YAML設定を直接入力するか、既存の docker-compose.yaml ファイルをインポートします

2.PUID と PGID の設定

  • 必要に応じて、PUIDPGIDの値を設定します。

  • コンテナエラーの原因となる権限問題を回避するため、現在のユーザーのユーザーIDとグループIDを使用することを推奨します。

3. プロジェクトのデプロイ

  • 設定を確認後、「デプロイ」をクリックしてプロジェクトをビルドします。

これらの手順に従うことで、Docker Composeを使用してホームメディアセンター全体を起動・管理できます。すべてのサービスは依存関係を正しく設定した状態でバックグラウンドで実行され、スムーズな運用が保証されます。