![よく使うdocker-composeコマンド](https://mitikusa-engineer.com/wp-content/uploads/2023/06/Docker-1024x538.png)
Dockerのキモとなる部分『docker-compose』とビルドについてまとめました。
Docker Composeとは
複数コンテナの管理を自動化する機能の事です。yamlファイルに、対象とするコンテナやプロパティなどを定義してコード化できるため、保守性の高い管理ができるようになります。
よく使うコマンド
コマンド | 内容 |
---|---|
docker-compose config | コマンド実行時の カレントフォルダにあるyamlファイルの内容を表示 |
docker-compose up [オプション] | コマンド実行時の カレントフォルダにあるyamlファイルに定義した構成で 下記を一括実行 1.イメージのダウンロード 2.コンテナの作成 3.コンテナの起動 ※『–no-start』とすると3.は実施しない |
docker-compose ps docker-compose ps -a | -aなし:起動中のコンテナを一覧表示 -aあり:全てのコンテナを一覧表示 |
docker-compose images | ローカルのDockerイメージを一覧表示 |
docker-compose exec [サービス名] bash or sh | 指定したサービスのコンテナにターミナル接続 |
docker-compose stop | yamlファイルに沿ってコンテナを一括停止 |
docker-compose start | yamlファイルに沿ってコンテナを一括起動 |
docker-compose rm | yamlファイルに沿ってコンテナを一括削除 |
docker-compose down –rmi all –volumes –remove-orphans | upと逆順で全てのコンテナやイメージを一括削除 |
サンプル
一部のコマンドだけですが、使用例をまとめました。
以下は、『UbuntuにWordPressを構築する』流れになります。
WordPressは以下2つのコンテナで構築できるため、これらをDocker Composeでまとめる形になります。
・DBサーバー(MySQL)
・Webサーバー(Apache + PHP)
yamlファイルの作成
yamlファイルのフォーマットVersion確認
yamlファイルのフォーマットVersionを決めるため、公式ドキュメントで確認します。
執筆時はv3.8が最新のようだったので、Dockerが対応しているバージョンか確認します。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000001-5.jpg)
sudo docker version
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000000-7.jpg)
大丈夫そうです。
WordPressとMySQLの推奨環境確認
WordPressの公式サイト(日本語)で推奨環境を確認します。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000004-2.jpg)
よって、Dockerイメージは下記の組み合わせでダウンロードできるようにyamlファイルに記述します。(後述)
- WordPressイメージのPHPバージョンが7.4以上
- MySQLイメージのバージョンが5.7以上
※MySQLには現在、大きく分けて8.0系と5.7系があり、性能的には8.0系の方が良かったりしますが
WordPressに8.0系を使う場合、当ページの本題から外れた対応が必要になるため
ここでは5.7系を使用します。
Dockerイメージのバージョン確認(WordPress)
Docker Hubからダウンロード可能なWordPressバージョンを確認します。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000003-3-1024x460.jpg)
Dockerイメージのバージョン確認(MySQL)
Docker Hubからダウンロード可能なMySQLバージョンを確認します。
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000002-5.jpg)
yamlファイルに構成情報をまとめる
まずはyamlファイルを格納するフォルダを用意します。
mkdir /home/[ユーザー名]/wordpress
cd /home/[ユーザー名]/wordpress
yamlファイルに構成情報を書き込みます。
vim docker-compose.yaml
# docker-compose.yamlの内容
version: "3.8"
# 各コンテナの定義
services:
# DBサーバー
db:
image: mysql:5.7
volumes:
- volume_mysql:/var/lib/mysql # DockerボリュームにDBのデータを残す(名前付きボリュームとして永続化)
restart: always # 実行時に再起動
environment:
MYSQL_ROOT_PASSWORD: passrt1
MYSQL_DATABASE: wp-db-sample
MYSQL_USER: admin
MYSQL_PASSWORD: passad1
# WordPress(Apache + PHP)
wordpress:
depends_on:
- db # wordpressより先にdbを起動
image: wordpress:latest
ports:
- "8000:80" # ホスト側ポート8000とコンテナ側ポート80を接続
volumes:
- ./wordpress:/var/www/html # wordpressディレクトリにwordpressのデータを残す(ディレクトリとして永続化)
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: admin
WORDPRESS_DB_PASSWORD: passad1
WORDPRESS_DB_NAME: wp-db-sample
volumes:
volume_mysql: # /var/lib/docker/volumes/ に名前付きボリュームを作成(docker volume lsで確認できる)
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000009-2.jpg)
yamlファイルを元に各コンテナを起動
起動
docker-compose up -d
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000007-2.jpg)
起動したことを確認
docker-compose ps -a
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000008-2.jpg)
各コンテナが起動していることを確認できました。
WordPressが動作することを確認
# 仮想環境に作成した場合
http://[仮想環境のIPアドレス]:8000/
# ホストPCに作成した場合
http://localhost:8000/
![](https://mitikusa-engineer.com/wp-content/uploads/2022/06/WS000006-3.jpg)
WordPressが正常に動作していることが確認できました。