これまでの連載では、Dockerの基本やコマンド操作を学び、nginxのWebサーバを起動するところまで体験してきました。
今回は最終章として、より実践的な開発環境を構築するために欠かせない Docker Compose と ボリューム の基礎を解説します。
Contents
- Dockerとは何か?仮想マシンとの違いから学ぶ
- 仮想マシン vs コンテナの実例比較(WEBサーバ構築)
- dockerコマンドを実際に使ってみよう
- Docker Composeやボリュームの基礎 ⇦今ここ
Docker Composeとは?
Docker Compose は、複数のコンテナを簡単にまとめて起動・管理できるツールです。
例えばWebサーバ(nginx)+アプリケーション(Node.jsなど)+DB(MySQL)といった構成を、1つの設定ファイル(docker-compose.yml
)で定義できます。
Composeを使うメリット
- 複数のサービスをまとめて起動・停止できる
- 設定をコードで管理できる(Infrastructure as Code)
- 他の開発者と環境構成を共有しやすい
docker-compose.ymlの実用構成(nginx + PHP + MySQL)
以下は、nginxとPHP、MySQLを連携して構築する実例です:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
version: '3.8' services: web: image: nginx:latest ports: - "8080:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./app:/var/www/html depends_on: - php php: image: php:8.1-fpm volumes: - ./app:/var/www/html db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: rootpass MYSQL_DATABASE: appdb MYSQL_USER: appuser MYSQL_PASSWORD: password volumes: - db-data:/var/lib/mysql volumes: db-data: |
この構成では、nginx
が php-fpm
を経由してアプリケーションを実行し、MySQL にデータを保存します。
Composeで起動してみよう
設定が完了したら、以下のコマンドで全てのサービスをビルド&起動してみましょう。
1 |
docker-compose -f ./docker-compose.yml up --build -d |
このコマンドは以下を意味します:
-f
:ファイル名を指定(省略可)--build
:初回ビルドを強制-d
:バックグラウンドで起動(detach)
起動後、docker ps
コマンドで各コンテナが正常に立ち上がっているか確認しましょう。
1 |
docker ps |
ボリュームとは?
Dockerのボリューム(volume)は、コンテナの外にデータを保存できる仕組みです。
コンテナは基本的に”使い捨て”の性質があるため、ログやDBなどのデータを永続化したい場合に使われます。
ボリュームの使いどころ
- DBのデータを保持したい
- ログファイルなどをホスト側で確認したい
- アプリケーションのコードをホットリロードしたい
ボリュームの使い方
Composeでボリュームを使う場合は、以下のように記述します:
1 2 3 4 5 6 |
volumes: - mydata:/var/lib/mysql volumes: mydata: |
この記述により、mydata
という名前のボリュームがdockerを起動する側で作成され、MySQLのデータ領域にマウントされます。
つまり、作成されたmydataディレクトリにファイルを置くことでコンテナ上の/var/lib/mysql配下にファイルを連携することができるというわけです。
まとめ
Docker Composeとボリュームの使い方を知っておくことで、より実用的で保守性の高い開発環境を構築することができます。
- Compose:複数コンテナの管理を楽にする
- Volume:データの永続化・共有が可能になる
本連載の内容を通して、Dockerの基本から実践まで一通り学べたのではないでしょうか?
これをベースに、さらに本格的な開発環境の構築やCI/CDなどにもチャレンジしてみてください!
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
人気ブログランキング
にほんブログ村