このリポジトリは Laravel初心者 のための学習リソースです。DockerとLaravelを別々に理解しながら、段階的に学習できるように設計されています。
- 📚 学習重視: 各ステップの「なぜ」を理解できる
- 🔧 分離理解: DockerとLaravelの役割を別々に学習
- ⚡ 簡単セットアップ: 複雑な環境構築を一発解決
- 📖 丁寧な解説: 初心者でも迷わない詳細ガイド
このプロジェクトを始める前に、以下をインストールしてください:
Dockerが初めての方は、まず学習ガイド(LEARNING.md)をご覧ください。基本概念から丁寧に解説しています。
git clone https://github.com/ryukyuhub/docker-laravel
cd docker-laravel💡 なぜこのステップが必要? プロジェクトファイル(Docker設定、PHP設定など)をローカルにダウンロードします。
docker-compose up💡 このコマンドで何が起こる?
- 🔧 Docker環境の構築: PHP、MySQL、メールサーバーのコンテナを作成
- 🌐 サービス起動: 各サービスが起動し、相互に連携開始
- 📁 ボリューム作成: データベースデータの永続化領域を作成
⏰ 初回は10-15分かかります(Docker imageのダウンロードのため)
http://localhost:8080Apache の初期画面が表示されれば、Docker環境の構築は成功です!
バージョンやポート番号をカスタマイズしたい場合は、以下のファイルを編集できます:
📁 設定ファイル一覧(クリックで展開)
全体設定
docker-compose.yml- コンテナ構成とポート設定
MySQL(データベース)設定
config/mysql/Dockerfile- MySQLバージョンconfig/mysql/my.cnf- MySQL詳細設定
PHP+Apache(ウェブサーバー)設定
config/php/Dockerfile- PHPバージョンconfig/php/php.ini- PHP設定config/php/apache2.conf- Apache基本設定config/php/sites/000-default.conf- バーチャルホスト設定
docker ps💡 何が表示される? 現在動いているコンテナの一覧が表示されます。通常は以下の3つが動作しています:
php-apache- ウェブサーバーmysql- データベースmail- メールサーバー
docker container exec -it {コンテナ名} bash💡 コンテナに入ると何ができる? Laravelプロジェクトの作成や、artisanコマンドの実行が可能になります。
pwd
# 結果: /var/www/htmlこの場所が、ブラウザからアクセスできるWebサイトのルートディレクトリです。
rm -rf public💡 なぜpublicディレクトリを削除?
- Laravel は空のディレクトリにインストールする必要があります
- 初期状態でApache用のサンプルファイルが置かれているため、これを削除します
⏰ この処理は15~30分かかります(初回のみ)
# 最新版Laravel(推奨)
composer create-project laravel/laravel --prefer-dist ./
# 特定バージョンを指定したい場合
# composer create-project laravel/laravel:^10.0 ./💡 Composerとは? PHPのパッケージ管理ツールです。Laravelや必要なライブラリを自動でダウンロード・インストールしてくれます。
- APP_NAME=Laravel
+ APP_NAME={任意のプロジェクト名}
- DB_HOST=127.0.0.1
- DB_DATABASE=laravel
- DB_USERNAME=root
- DB_PASSWORD=
+ DB_HOST=mysql # docker-compose.ymlより
+ DB_DATABASE=sample # デフォルトで存在しているDB、変更してもOK
+ DB_USERNAME=root # docker-compose.ymlより
+ DB_PASSWORD=root # docker-compose.ymlより
- MAIL_HOST=mailhog
+ MAIL_HOST=mail
+ MAIL_PORT=1025
+ MAIL_FROM_ADDRESS=info@mail.comコンソールで起動中コンテナをキャンセルして、もう一度すぐに起動させる
docker-compose uphttp://localhost:8080 # docker-compose.ymlで指定しているポートchmod -R 777 storage && chmod -R 777 bootstrapphp artisan migrate
- 'timezone' => 'UTC',
+ 'timezone' => 'Asia/Tokyo',
- 'locale' => 'en',
+ 'locale' => 'ja',
- 'faker_locale' => 'en_US',
+ 'faker_locale' => 'ja_JP',
コンテナに入ってから行う
php artisan tinker
Mail::raw('test mail',function($message){$message->to('test@example.com')->subject('test');});http://localhost:8025//var/www/html# バージョン指定なしで最新版となる
composer create-project laravel/laravel --prefer-dist ./
# バージョン指定あり
composer create-project laravel/laravel:^8.0 ./
composer create-project "laravel/laravel=9.*" .//var/www/html- DocumentRoot /var/www/html/public
+ DocumentRoot /var/www/html- DocumentRoot /var/www/html/public
+ DocumentRoot /var/www/htmldocker-compose down
docker-compose build
docker-compose up
http://localhost:8080- DBeaver
- TablePlus
Host: localhost
Port: 3307 # docker-compose.ymlより
User: root # docker-compose.ymlより
Password: root # docker-compose.ymlより/config/mysql/initdb.d/init.sql
が実行されていてビルド時にデータベースを構築することも成功しているので、「init.sql」も利用できる
「sample」というデータベースはテストなので削除しても構わない
下記コマンドを実行
パスワードを求められるので、そのユーザーのものを入力する
docker exec -it {コンテナ名} mysql -u {ユーザー名} -p
show databases;
use {データベース名};
show tables;
desc {テーブル名};
docker container exec -it docker-rails-web-1 bash
docker-compose up
docker-compose stop
docker-compose build
docker-compose down
docker-compose down --rmi all --volumes --remove-orphans
docker image prune -a
このプロジェクトは MIT License の下で公開されています。
学習リソースの改善提案は Issue でお気軽にお知らせください。
🎉 Laravel開発を楽しんでください!
rm -rf /usr/local/bin/npm /usr/local/share/man/man1/node* ~/.npm
rm -rf /usr/local/lib/node*
rm -rf /usr/local/bin/node*
rm -rf /usr/local/include/node*
apt-get purge nodejs npm
apt autoremovecurl -sL https://deb.nodesource.com/setup_lts.x | bash - # LTS
curl -sL https://deb.nodesource.com/setup_18.x | bash - # バージョン指定
apt install -y nodejs