【チーム共有】Laravelプロジェクトをdockerでチーム開発できるようにした


概要

今あるLaravelプロジェクトをチームで開発するためにdockerを導入しました。
導入コストがかからないようにlaradockを採用。
その時のことをメモ。

また、今回は他所のリポジトリで既に管理しているプロジェクトとLaradockを取ってきますが、
新しく作成するgit管理ファイルでまとめたいのでそれぞれのフォルダ内にある.gitファイルを削除して親ディレクトリ(まとめディレクトリ)でまとめる、という風にしています。

このやり方が漠然と、良くない事なのかもしれないと思いながらこれをしているので
もし問題点や他にいいやり方等があれば教えて頂けると嬉しいです。
(もしくはこれが無意味だ、等)

前提

  • プロジェクトをgitで管理していること
  • PCにdocker環境が整っていること (以下にURLだけ投げときます)
  • .gitignoreに予めlaradock/が追記されていること

.gitignoreの編集はプロジェクトにおいて権限がある方に済ませてもらいましょう

※windows10 home (toolbox)でも試しましたが
うまくいかなかったのでこの記事では諦めてください、、

docker -- windows10 pro
dokcer -- mac

目標

この記事での手順を通して、メンバーそれぞれが自身のローカル環境で
共通のLaravelプロジェクトの開発、およびそのコードのgithubでの管理を目標とします。

目標ディレクトリの構成

project
|
| - laradock
|
| - src(Laravel project) -- app等々

※laradockはgit管理対象から外します
※単なるプロジェクト(project)とした表記は親ディレクトリで
Laravel プロジェクトとした表記はLaravel project を指しています

参考記事

error:500でハマった時見つけました

Laravel プロジェクトをクローン

  • git cloneします
git clone {管理しているLaravelプロジェクトリポジトリのURL}

クローンしたプロジェクトに.envを用意しておきます

-- mac

cp .env.example .env

-- windows

copy .env.example .env

Laradock クローン

  • プロジェクト用のディレクトリの作成 & 中に移動
cd {プロジェクト名}
  • Laradock をクローン
git clone https://github.com/Laradock/laradock.git
  • .envをコピー生成

-- mac

cd laradock && cp env-example .env

-- windows

cd laradock && copy env-example .env
  • docker-compose.ymlのapache2 serverのports

/laradockにあるdocker-compose.ymlapache2 serverの欄のportsの部分を以下のように書き換えてください。

portについて、ローカルの他のwebサーバー系と面倒なことが起きないようにlocalhost:8002で受け付けるようにしています。

※.envに変数を書いてそこから取ろうとしたのですが、うまくいかなったので直書きしています。
どなたかもしわかればご教授ください、、

  • apache2/sitesdefault.apache.confを編集

エディタで以下のように編集してください

2行目のServerNamelocalhostに変更します
3.6行目の/var/www//var/www/{Laravelプロジェクト名}/publicに変更します

コンテナ立ち上げ

実際にローカル環境を立ち上げてみます

cd laradock && docker-compose up -d apache2

立ち上げたコンテナに入っていきます

docker exec -it laradock_workspace_1 bash

/var/wwwに入ると思うので、プロジェクトディレクトリに入ってcomposerを入れていきます

cd { プロジェクト名 } && composer install

次にLaravel プロジェクトのAPP_KEYを生成します

php artisan key:generate

このコマンドが正常に完了したのち、ブラウザでlocalhost:8002に入り、
プロジェクトのトップページが表示されていれば成功です

上の部分までできたら、あとは実際に開発していくのみです。

では。