Docker Composeは、さまざまなDockerコンテナーのデプロイを一元管理するために使用できるツールです。各サービスを個別に管理されたコンテナに簡単に入れることができるため、複数のマイクロサービスを必要とするアプリケーションにとって重要なツールです。
DockerComposeは何をしますか?
Dockerコンテナーは、分離された環境でアプリケーションを実行するために使用されます。今日では、Dockerがもたらす多くの利点のために、Dockerでアプリケーションのデプロイが行われるのを見るのは非常に一般的です。ただし、多くの場合、単一のコンテナを実行するほど単純ではありません。通常、多くの可動部品で構成される1つのまとまりのあるサービスとして機能するために、多くのコンテナが集まっている場合があります。
デプロイ時にこれらすべてを管理するのは面倒なので、Dockerは、それをクリーンアップするために、複数のコンテナーを一度に実行するために使用される構成ツールであるDockerComposeを提供します。 1つのYAMLファイルですべての構成を定義してから、1つのコマンドですべてのコンテナーを開始できます。
Docker Composeを使用すると、すべてのサービスを1つの大きなコンテナーにまとめるのではなく、個別に管理可能なコンテナーに分割できます。これらはすべて個別のコードベースで管理でき、個々のコンテナを手動で起動する必要がないため、これはビルドとデプロイの両方に適しています。
Docker Composeの使用は、3つのステップのプロセスです。
- Dockerfileを使用してコンポーネントイメージをビルドするか、レジストリからプルします。
- すべてのコンポーネントサービスを
docker-compose.ymlで定義します ファイル。 -
docker-composeを使用してそれらすべてを一緒に実行します CLI。
DockerComposeは別の種類のDockerfileではありません。 Dockerfileを使用してDockerコンテナをビルドして公開する必要があります。ただし、直接実行する代わりに、DockerComposeを使用してマルチコンテナーデプロイメントの構成を管理できます。
Docker Composeをどのように使用しますか?
Docker作成ファイルの構成は、docker-compose.ymlで行われます。 。 Dockerfileのようにプロジェクトのルートにこれを配置する必要はありません。実際、他のコードに依存しないため、どこにでも移動できます。ただし、ローカルでイメージをビルドする場合は、ビルド中のコードを含むプロジェクトフォルダーに配置する必要があります。
作成構成ファイルは次のようになります。この構成では、wordpressを使用してWordPressインスタンスを実行します DockerHubからのコンテナー。ただし、これはMySQLデータベースに依存します。MySQLデータベースもComposeによって作成されます。
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpasswordchangeme
MYSQL_DATABASE: wordpress
MYSQL_USER: usernamechangeme
MYSQL_PASSWORD: passwordchangeme
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: usernamechangeme
WORDPRESS_DB_PASSWORD: passwordchangeme
volumes:
db_data: このファイルの形式を見てみましょう。まず、バージョン番号です。使用しているバージョンによって構文が変わる可能性があるためです。
次に、サービスのリスト。 1つ目は「db」という名前で、mysql:5.7を使用します コンテナ、常に再起動するように設定し、ユーザーとパスワードを使用してデータベースを構成するための環境変数を使用します。再起動後もデータを維持するために、このイメージは、MySQLデータディレクトリにマウントされたDockerボリュームで構成されています。
もう1つのサービスは「wordpress」です。これはデータベースサービスに依存しており、Dockerが実行前にデータベースが開始されていることを確認します。ポート80をポート8000として公開し、MySQLに接続できるようにいくつかの環境変数を設定します。データベースのホストがdb:3306に設定されていることに注意してください 、WordPressコンテナに「db」サービスに接続するように指示します。
最後に、ボリュームは永続ストレージ用に定義されています。オプションで、コンテナのカスタムネットワークを定義することもできます。構成できる拡張オプションはたくさんあるので、特定のことを行う場合は、DockerComposeのドキュメントを確認する必要があります。
設定が完了すると、このサービスを簡単に開始できます。 docker-compose upを実行するだけです 、必要なすべてのコンテナをプルしてサービスを開始します。
docker-compose up -d
また、docker psを使用してシステムで実行されているサービスが表示されます。 。この場合、WordPressが正常に稼働していることがわかります。
関連: LinuxにDockerとDockerComposeをインストールする方法
DockerComposeを使用したビルド
Docker ComposeはDockerfileプロジェクト内でも使用でき、Docker Hubからプルするのではなく、ローカルでイメージをビルドして実行するように設定できます。
これを行うには、buildを追加するだけです。 サービスのセクション。さまざまなコンテキストディレクトリを設定したり、さまざまなイメージにさまざまなDockerfileを設定したりできます。
version: "3.8"
services:
webapp:
build:
context: ./dir
dockerfile: Dockerfile-alternate
image: imagename:tag
この場合、image: 変数も設定されていますが、ここではDockerComposeによって作成されたイメージにタグを付けるために使用されます。