環境構築が苦手・でもWeb大好き人間がDockerの中身を理解してみた話

この記事について

この記事では、Laravel開発をDockerでやってみた私が、「そもそもDockerって何?」「なぜこれをやるの?」を自分なりに整理してみた記録です✍️

環境構築が苦手でも、Web開発は大好き!という方に向けて、「イメージ?ボリューム?なにそれ美味しいの?」状態からのスタートを優しくまとめました。

🍱 Dockerってなに?をざっくり言うと…

Dockerとは、「自分だけの仮想の環境を用意して、ソフトを動かす」仕組み

いろんなソフトを動かすと、環境がごちゃごちゃしがち…。
でもDockerを使えば、隔離された環境(=コンテナ)を用意して、スッキリ・再現性高く開発できるんです!

🧠 出てくる用語がややこしいので整理!

🧊 イメージとは?

  • コンテナの設計図
  • Laravelで言えば、PHPやComposer、必要な拡張モジュールが入った環境のひな型
  • 1つのイメージから、何個でもコンテナが作れる!
docker build -t my-laravel-app .

🍱 コンテナとは?

  • 実際に動いているアプリケーションの入った“仮想の箱”
  • イメージから生まれる動く存在
  • LaravelやNginxなど、それぞれの役割ごとに1つのコンテナとして動かす!
docker ps
docker exec -it コンテナ名 bash

💾 ボリュームとは?

  • データを永続化(消えないように)保存するための外付け倉庫
  • コンテナの中だけにデータがあると、削除時にすべて消える!
  • MySQLなどのDBデータは必ずボリュームに保存するようにする💡
docker volume ls
docker volume inspect ボリューム名

それぞれの関係性は?

コンテナ・イメージ・ボリュームが一体結局何やっているのかよくわからない。わかりにくいので教室に例えるとこんな感じ。

要素教室に例えると…なにしてるの?
📘 イメージ教科書セット(国語・英語など)必要な知識・ツールのかたまり(=設計図)
🪑 コンテナ実際に作業する場所(=実行中の環境)
📒 ボリュームノート(開かれた)記録・データ保存(=永続化)

🧩 どうやって使い分けるの?

用語一言で言うと消える?役割
イメージ設計図・冷凍弁当コンテナを作る元
コンテナ実行中の環境✅(削除時)アプリケーションが動く場所
ボリュームデータ保存倉庫DBやファイルの永続化に使う

🖋 なぜ .yml ファイルを書くのか?

それはDockerに「このコンテナたちをどう構成して動かすか」を伝えるため!

version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./src:/var/www/html
  web:
    image: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf

このように、Laravelのソースコード、PHPの環境、Nginxの連携方法などを1つのファイルで管理できます✨

実は、docker compose up で一発起動できるのもこのファイルのおかげ✨
どのコンテナを使うか、どうつなぐか、どんな設定で起動するか…
全部 docker-compose.yml に書いてあるから、設計図さえあれば、誰でも同じ環境を即座に再現できるというわけなんです!

🧠 GUIでLaravel動かせるのになんでわざわざ?

便利なGUIツール(Laravel Herdなど)もあるけど…

  • 中身がブラックボックスで学習になりにくい
  • Gitでチームに共有しにくい
  • エラーの原因がわかりづらい

だからこそDockerfileやdocker-compose.ymlを自分で書くと「ちゃんと理解した開発」ができる!のです🔥

🧁 おまけ:今後やりたいこと

  • Laravelの開発環境をもう少し整理
  • VueやReact用のDockerfileも作ってみたい!
  • WordPressバージョンも試してみたい!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です