きっかけ
- 環境開発苦手
- 長いコマンド打たなきゃでdocker怖い
- ちょうどLaravelの開発環境ほしかった
とにかく環境構築・dockerに対しての喰わず嫌い(つまみ食い嫌い)
感が半端ないのであえてdockerでLaravel環境構築やってみる
Laradockとは?
Laradock??dockerじゃないんかい!!
というつっこみを入れつつ・・・
A full PHP development environment for Docker.
Supports a variety of useful Docker Images, pre-configured to provide a wonderful PHP development environment.
参照:Lradock
Laradockとは、Laravelコミュニティの有志がメンテナンスしている
オープンソースのLaravel環境開発であり、「Docker」上で動作する。
なのでざっくりと説明すると、
dockerが土地でLaradockが家みたいな関係なのだ。
Laradockのダウンロードとdockerの初期化
プロジェクトのディレクトリ作成
最終的なディレクトリのイメージ
projectname
laradock-projectname
laravel-projectname
上記のディレクトリをイメージしながらまず最初にprojectname
ディレクトリを作成し、その中に入る。
$ mkdir projectname
$ cd projectname
Laradockをダウンロード
LaradockをGitHubからクローンしてくる。つけたいディレクトリ名前を最後に入力。
$ git clone https://github.com/Laradock/laradock.git laradock-projectname
Laradockの環境設定ファイルを作成
Laradockディレクトリのlaradock-projectname
に入っる。
env-example
ファイルを.env
としてコピーする。
$ cd laradock-projectname
$ cp env-example .env
dockerコンテナの初期化
コンテナ初期化では必要なファイルのダウンロードをするため、割と時間がかかる。
$ docker-compose up -d nginx mysql workspace phpmyadmin
こちらのコマンドでStateがUpになっていれば無事成功!
$ docker-compose ps
Laravelプロジェクトの作成
Laravelプロジェクトは「workspace」コンテナ上に作成します。
「workspace」コンテナへログイン
「workspace」コンテナにはLaravelに必要なものが一式用意されているため、
composerなどは「workspace」コンテナを通して実行。
とりあえずログイン
$ docker-composer exec workspace bash
composerコマンドを実行して新規プロジェクトを作成。
今回はlaravel5.5で作成したかったのでバージョン指定。
$ composer create-project laravel/laravel laravel-projectname --prefer-dist "5.5.*"
無事作成できたらコンテナからログアウト
$ exit
Laradockの環境設定ファイルを設定
先ほど作成したLaradockディレクトリ配下の.env
を変更。
※必要部分以外省略
### Paths #################################################
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../laravel-projectname
# Point to where the `APP_CODE_PATH_HOST` should be in the container
APP_CODE_PATH_CONTAINER=/var/www
# You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy`
APP_CODE_CONTAINER_FLAG=:cached
# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=~/.laradock-projectname/data
nginxの設定
Laradockディレクトり配下のdocker-compose.yml
を変更する。
これでポート番号を8888に変更することができた。
※必要部分以外省略
### NGINX Server #########################################
nginx:
build:
context: ./nginx
args:
- PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
- PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
- CHANGE_SOURCE=${CHANGE_SOURCE}
- http_proxy
- https_proxy
- no_proxy
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
- ${NGINX_SSL_PATH}:/etc/nginx/ssl
ports:
- "8888:80"
- "443:443"
depends_on:
- php-fpm
networks:
- frontend
- backend
コンテナ再起動
一通り設定が終わったところで、コンテナを再起動。
$ docker-compose stop
$ docker-compose up -d nginx mysql workspace phpmyadmin
そしていよいよ・・・・・・・
じゃじゃじゃーーーん!!!!