開発中のLaravelプロジェクトをローカルのDocker環境へ移行

開発中のLaravelプロジェクトをローカルのDocker環境へ移行

環境

クライアントPC … MacOS
Docker内 … PHP7 + MySQL8 + Nginx

Dockerインストール

まず「Docker for Mac」をインストールします。
https://www.docker.com/

必要なコードの用意

以下のようなディレクトリ構造にします。
project_name
├─ laradock
└─ source
プロジェクト名のディレクトリを作成してその中に移動
cd ~
mkdir project_name && cd $_
「LaraDock」をGitクローン
git clone https://github.com/LaraDock/laradock.git
開発中プロジェクトをGitクローン
git clone https://github.com/ユーザー名/プロジェクト名
laradockへ移動し、環境設定ファイルを作成します。
cd laradock
cp env-example .env
.envファイルに記載してある以下2つのディレクトリが互いに同期します。
#ホストのディレクトリ
APP_CODE_PATH_HOST=../

#Dockerコンテナのワークスペース内のディレクトリ
APP_CODE_PATH_CONTAINER=/var/www

Webサーバーの設定

NginxとMySQLのコンテナ起動(バックグラウンド)
cd laradock
docker-compose up -d nginx mysql
全て起動していることを確認します。
Recreating laradock_mysql_1            ... done
Recreating laradock_docker-in-docker_1 ... done
Recreating laradock_workspace_1        ... done
Recreating laradock_php-fpm_1          ... done
Recreating laradock_nginx_1            ... done
ワークスペースコンテナへアクセスします。
docker-compose exec workspace bash
プロジェクトのソースへ移動し、Composerをインストールします。
cd source
composer install
コンテナから出ます。
exit
Nginxのパス設定を書き換えます
/laradock/nginx/sites/default.conf
root /var/www/public; → root /var/www/source/public;
コンテナを再起動
docker-compose restart

ブラウザを確認すると、画像のようになります。 http://localhost/

データベース設定

Mysqlコンテナへアクセス
cd laradock
docker-compose exec mysql bash

デフォルトでは以下の設定になっています。
・ユーザー名: default
・パスワード: secret

defaultユーザーには権限が無いので、ルートでログインして権限を与えます。
mysql -u root -proot
> show grants for root@localhost;
> GRANT ALL ON *.* TO 'default'@'%';
.envを準備します。ホストはmysqlです。
DB_HOST=mysql
DB_DATABASE=db_name
DB_USERNAME=default
DB_PASSWORD=secret
開発中のDBをDocker内のMysqlへ移行します。
Webページが本番と同じ動作をすれば、移行は成功です。
» エンジニア登録はこちら