Skip to content

ryukyuhub/docker-laravel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DockerでLaravel環境構築 📚 初心者向け学習リソース

Laravel Docker PHP MySQL

🎯 このプロジェクトについて

このリポジトリは Laravel初心者 のための学習リソースです。DockerとLaravelを別々に理解しながら、段階的に学習できるように設計されています。

✨ 特徴

  • 📚 学習重視: 各ステップの「なぜ」を理解できる
  • 🔧 分離理解: DockerとLaravelの役割を別々に学習
  • ⚡ 簡単セットアップ: 複雑な環境構築を一発解決
  • 📖 丁寧な解説: 初心者でも迷わない詳細ガイド

🚨 重要な注意事項

⚠️ このプロジェクトは学習・開発環境専用です ⚠️ 本番環境では使用しないでください(セキュリティ設定が学習用のため)


📋 前提条件

このプロジェクトを始める前に、以下をインストールしてください:

💡 Docker初心者の方へ

Dockerが初めての方は、まず学習ガイド(LEARNING.md)をご覧ください。基本概念から丁寧に解説しています。


🚀 クイックスタート

1️⃣ リポジトリのクローン

git clone https://github.com/ryukyuhub/docker-laravel
cd docker-laravel

💡 なぜこのステップが必要? プロジェクトファイル(Docker設定、PHP設定など)をローカルにダウンロードします。

2️⃣ 環境の起動(最初の1回だけ時間がかかります)

docker-compose up

💡 このコマンドで何が起こる?

  • 🔧 Docker環境の構築: PHP、MySQL、メールサーバーのコンテナを作成
  • 🌐 サービス起動: 各サービスが起動し、相互に連携開始
  • 📁 ボリューム作成: データベースデータの永続化領域を作成

⏰ 初回は10-15分かかります(Docker imageのダウンロードのため)

3️⃣ ブラウザで確認

http://localhost:8080

Apache の初期画面が表示されれば、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コンテナの操作方法

実行中のコンテナを確認

docker ps

💡 何が表示される? 現在動いているコンテナの一覧が表示されます。通常は以下の3つが動作しています:

  • php-apache - ウェブサーバー
  • mysql - データベース
  • mail - メールサーバー

PHPコンテナに入る(Laravel作業用)

docker container exec -it {コンテナ名} bash

💡 コンテナに入ると何ができる? Laravelプロジェクトの作成や、artisanコマンドの実行が可能になります。

現在位置の確認

pwd
# 結果: /var/www/html

この場所が、ブラウザからアクセスできるWebサイトのルートディレクトリです。

🎨 Laravel プロジェクト作成

1️⃣ 初期ファイルのクリア

rm -rf public

💡 なぜpublicディレクトリを削除?

  • Laravel は空のディレクトリにインストールする必要があります
  • 初期状態でApache用のサンプルファイルが置かれているため、これを削除します

2️⃣ Laravelプロジェクトのインストール

この処理は15~30分かかります(初回のみ)

# 最新版Laravel(推奨)
composer create-project laravel/laravel --prefer-dist ./

# 特定バージョンを指定したい場合
# composer create-project laravel/laravel:^10.0 ./

💡 Composerとは? PHPのパッケージ管理ツールです。Laravelや必要なライブラリを自動でダウンロード・インストールしてくれます。

.envファイルを下記のように編集する

- 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 up

ブラウザからアクセスして表示確認をする

http://localhost:8080 # docker-compose.ymlで指定しているポート

権限エラー(パーミッションエラー)が発生したら下記で解決するかも

chmod -R 777 storage && chmod -R 777 bootstrap

artisanコマンドでマイグレーションを行う

php artisan migrate



日本語モードにするために、config/app.php を下記のように編集する

- 'timezone' => 'UTC',
+ 'timezone' => 'Asia/Tokyo',

- 'locale' => 'en',
+ 'locale' => 'ja',

- 'faker_locale' => 'en_US',
+ 'faker_locale' => 'ja_JP',



メール確認

Laravel の tinker を使ってメール送信テスト

コンテナに入ってから行う

php artisan tinker
Mail::raw('test mail',function($message){$message->to('test@example.com')->subject('test');});

mailhog UI にアクセスし受信確認をする

http://localhost:8025/



Laravel の再インストール

下記の中を空にする

/var/www/html

コンポーザーを使って Laravel をインストールする

# バージョン指定なしで最新版となる
composer create-project laravel/laravel --prefer-dist ./

# バージョン指定あり
composer create-project laravel/laravel:^8.0 ./
composer create-project "laravel/laravel=9.*" ./



Laravel を削除する

下記の中を空にする

/var/www/html

ドキュメントルートを変更する

apache2.conf の調整

- DocumentRoot /var/www/html/public
+ DocumentRoot /var/www/html

000-default.conf の調整

- DocumentRoot /var/www/html/public
+ DocumentRoot /var/www/html

Docker を再ビルドする

docker-compose down
docker-compose build
docker-compose up

確認する

ドキュメントルートとなった /var/www/html になにかファイルを置いて、ブラウザからアクセスする

http://localhost:8080



クライアントソフトでデータベースの確認

データベース操作するクライアントソフトをインストール

いくつか存在するが、下記がおすすめ

クライアントソフトの設定を下記のようにしてリモート接続する

docker-compose.yml に設定している内容

Host: localhost
Port: 3307 # docker-compose.ymlより
User: root # docker-compose.ymlより
Password: root # docker-compose.ymlより

「sample」というデータベースの中に「samples」というテーブルがあれば、Docker ビルドで

/config/mysql/initdb.d/init.sql

が実行されていてビルド時にデータベースを構築することも成功しているので、「init.sql」も利用できる 「sample」というデータベースはテストなので削除しても構わない

CLI でデータベース操作

mysql コンテナ内に入って mysql コンソール状態にする

下記コマンドを実行
パスワードを求められるので、そのユーザーのものを入力する

docker exec -it {コンテナ名} mysql -u {ユーザー名} -p



MySQLコマンド

データベース一覧表示

show databases;

データベース選択

use {データベース名};

テーブル一覧表示

show tables;

テーブル構造確認

desc {テーブル名};



Docker コマンド


コンテナに入る

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開発を楽しんでください!

npm が使えなかったら

node と npm を消す

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 autoremove

node と npm をインストールする

curl -sL https://deb.nodesource.com/setup_lts.x | bash - # LTS
curl -sL https://deb.nodesource.com/setup_18.x | bash - # バージョン指定
apt install -y nodejs

About

DockerでLaravel環境構築 📚 初心者向け学習リソース

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published