Macで開発していたPHP-Laravelプロジェクトをwindowsに移動することになった。
Windows専用にPHP,Laravel,MySQL,Apacheをインストールしても良いのだが、パソコンが変わるたびに開発環境を用意するのは面倒だ。dockerなら一度、開発環境を整えてしまえば他の環境でも流用できる!
というわけで、この記事では以下について解説します。
- dockerを利用してPHP,Laravel,MySQL,Apacheの環境をつくる手順
- Windows環境(wsl2 linux)にMacで作っていたLaravelプロジェクトを移行する手順
について解説します。
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |
この記事を読む前の前提条件
この記事では、以下の人を対象として書いています。
- Laravelを使ったことがある
- dockerを既にWindowsにインストールしている
- Mac、もしくはLinux上でlaravelプロジェクトを1つ以上作っている
- Laravelプロジェクト内にcomposer.jsonが存在する
- プロジェクトはgithub上にあるものとする
開発環境について
この記事を書くときに検証した開発環境は以下のとおりです。
- Windows11
- wsl2 linux
- PHP7.3(移動まえのMacでもPHP7.3を利用していました)
- Laravel 8.12
まずはDockerでPHP、Apache、MySQLの開発環境を作る
まずは、dockerでPHP、Apache、MySQLの開発環境を作ります。
ここで紹介する環境は、GitHubにもコードを公開しているので、参考にしてみてくださいね。
dockerでphpとmysqlの開発環境を作る設置. Contribute to jshirius/docker_ph…
docker環境でPHP、Apache、MySQLをインストールするための準備
docker環境でPHP、Apache、MySQLをインストールするための準備として、以下のようなファイル構成を作ります。
root(ルート)
├── docker
│ ├── mysql #mysql用のコンテナ設定
│ │ ├── Dockerfile
│ │ └── data ここにmysqlのデータファイル類を格納する(dataフォルダの中身は空にしておくこと)
│ └── php #PHP、apache用のコンテナ設定
│ ├── 000-default.conf
│ └── Dockerfile
├── docker-compose.yml
└── src #laravelのプロジェクトファイル一式を格納する場所
└── ここに、あなたのLaravelプロジェクト(フォルダに格納された状態)を置きます
また、本記事では、上記のようなファイル構成を前提に解説します。
以降、ファイルごとに説明します。
「root/docker/php/000-default.conf」で.htaccess(rewrite)の設定
root/docker/php/000-default.confの設定例
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/engineer-begin-site/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<Directory /var/www/html/engineer-begin-site/public>
AllowOverride All
</Directory>
</VirtualHost>
上記の例は、Laravelのプロジェクトファイル名が「engineer-begin-site」になっています。engineer-begin-siteの部分は、ご自身のプロジェクト名に合わせて設定します。
「root/docker/php/Dockerfile」でPHP、Apacheの設定をする
設定例は以下の通り。
FROM php:7.3-apache
# 設定ファイルの設定
ADD 000-default.conf /etc/apache2/sites-enabled/
# PHPと一緒にライブラリーもインストール
RUN apt-get update && docker-php-ext-install pdo_mysql mysqli mbstring
# unzipなどの必要ライブラリも一緒にインストール
RUN apt-get install -y unzip \
git \
zip \
unzip \
vim \
libpng-dev \
libpq-dev
# ログイン直後のディレクトリを指定する
WORKDIR /var/www/html
# Composerをインストールする(Docker 17.05以上)
COPY --from=composer /usr/bin/composer /usr/bin/composer
# Laravelで必要になるmodRewriteを有効化する(.htaccessの利用)
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite
EXPOSE 80
PHPのバージョンは、composer.jsonの以下を設定を確認して入れます。
composer.jsonファイルの一例
"license": "MIT",
"require": {
"php": "^7.3|^8.0",
"artesaos/seotools": "^0.20.0",
"encore/laravel-admin": "^1.8",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.12",
"laravel/tinker": "^2.5",
"laravelium/sitemap": "^8.0"
},
本記事では、PHP7.3でLaravelプロジェクトを作成しているので、PHP7.3をインストールします。
補足:
PHP8をインストールすると、Laravelエラーが出て(エラーの内容忘れました・・・)うまく動かなかったので、移動前の環境に合わせてPHP7.3をインストールしました。
「root/docker/mysql/Dockerfile」でMySQLの設定をする
mysqlの設定例
# windows wsl2環境で動かす場合は、「5.7.16」まで指定しないと、なぜかビルドに失敗します
FROM mysql:5.7.16
EXPOSE 3306
root/docker-compose.yml
docker-compose.ymlの設定例
version: '3'
services:
app:
build:
context: ./docker/php
dockerfile: Dockerfile
volumes:
# ドキュメントルートの設定。PC側からはsrcで参照できるようにした
- ./src:/var/www/html
ports:
- "80:80"
# コンテナ名を明示的に指定する
container_name: laravel-container
depends_on:
- db
db:
build:
context: ./docker/mysql
dockerfile: Dockerfile
volumes:
- ./docker/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
# コンテナ名を明示的に指定する
container_name: mysql-container
environment:
- MYSQL_ROOT_PASSWORD=mysql_pass
dockerでビルドしてPHP、Apache、MySQLをインストールする
上記までの準備がおわったら、以下のコマンドを実行してPHP、Apache、MySQLをインストールします。
尚、「root/docker/mysql/data/」の中に何かしらのファイルがあると、mysqlを起動できないので注意が必要です。
docker compose up -d
無事にインストールが終わると、Docker Desktopで確認すると以下のようになっています。
※ StatusがExitedになっていたら、「▶」ボタンを押して起動します。
laravelプロジェクトをインポートする
前章でPHP、Apache、MySQLをインストールしました。
ここでは、インストールしたPHP、Apache、MySQLが起動していること前提で話を進めます。
- Laravelプロジェクトを設置するディレクトリに移動します。
この記事では、srcディレクトリにLaravelプロジェクトを設置する前提で話を進めます。 - GitHubでLaravelのプロジェクトファイル一式をcloneする
GitHubを利用していない場合は、移動元のPCからプロジェクトファイル一式を持ってきても良いです。 - 「docker compose exec app bash」 を実行してPHP側のコンテナの中に入る
このあとの操作は、特に記載がない限りはコンテナの中で操作します。 - laravelのルートに移動する(composer.jsonファイルが有る場所)
- composer updateでLaravelプロジェクトに必要なライブラリをインストールする
- ルートにvenderフォルダが作成されていることを確認します
- 「php artisan key:generate」を実行して、アプリケーションキーを作成する
- envを環境に合わせて編集します。
「DB_HOST=mysql-container」のホストは、mysqlのコンテナ名を設定すること。「localhostではありません!」ここ間違えやすいです。 - mysqlのデータをimportします
- ブラウザで「http://localhost」にアクセスして、Laravelプロジェクトが表示されるか確認します。
まとめ
以上、Macで開発していたPHP-LaravelプロジェクトをDockerを用いてwindowsに移動する方法でした。
参考にさせて頂いたサイト
https://note.com/pocke_techblog/n/n8af813848fa0上記の記事通りにすすめて、…
\IT未経験者からのサポートあり!転職サービス3選!!/
サービス名 | |||
---|---|---|---|
未経験 | 未経験OK | 未経験の転職専用 | 経験者向け |
公開の求人数 | ITエンジニア全体で1万件以上 ITエンジニア未経験で600件以上 |
未公開 | 5,000件以上 |
利用対象 | 全職種 | IT特化 | IT特化 |
特徴 | ✓誰もが知る転職サービス ✓経歴を登録しておくとオファーが来る |
✓企業担当者と条件交渉 ✓スキルの身につく企業を紹介 |
✓IT専門のエージェントが対応 ✓転職成功すると年収200万円以上の大幅アップがある |
転職サポート内容 |
|
|
|
公式サイト | リクナビネクスト | テックゲート | レバテックキャリア |