Laravel on Docker

Laradockを使ってみた。

コンテナ作成

ディレクトリ作成

mkdir hoge
cd hoge

Laradock clone

git clone https://github.com/laradock/laradock.git

.env作成

cp env-example .env

コンテナの初期化。

docker-compose up -d nginx mysql workspace phpmyadmin

コンテナの立ち上がりを確認

docker-compose

立ち上げ時、nginxの設定をしていないのでエラーが出たが、とりあえずOK コンテナへログインしてみる。

docker-compose exec workspace bash

これで、/var/wwwのディレクトリへ入れる。 物理的にはcloneしたのと同じディレクトリになるらしい。

Laravel Install と ngnix設定

そしてlaravel instal。

composer create-project laravel/laravel app01

終了後、nginxの設定をするため一旦停止。

exit
docker-compose stop

設定ファイルは、 nginx/sites/default.conf だが、変更内容はまんま nginx/sites/laravel.conf.example これでよい。

なので、

mv nginx/sites/default.conf nginx/sites/default.conf.bk
cp nginx/sites/laravel.conf.example nginx/sites/default.conf

でOK

その上で、

vim nginx/sites/default.conf

で、7行目付近の

root /var/www/laravel/public
-> 
root /var/www/app01/public

と変更。

そして、Dockerコンテナを再度立ち上げる

docker-compose up -d nginx

するとエラー。

Cannot start service nginx: driver failed programming external connectivity on endpoint xxxx
Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)
ERROR: Encountered errors while bringing up the project

portの問題くさい。 MAMPの終了と、mac apacheの終了をする。

sudo killall httpd 

再度トライ。

docker-compose up -d nginx

成功!

ただし、ここで80番を専有したくはないので、ポートを変える。 設定ファイルを変えればいけそう /laradock/docker-compose.yml これの NGINX Server のポートを変えてみる

一旦dockerを止めて、ファイルを編集

docker-compose stop
vim /laradock/docker-compose.yml


      ports:
        - "${NGINX_HOST_HTTP_PORT}:80"
        - "${NGINX_HOST_HTTPS_PORT}:443"
↓
      ports:
        - "8123:8123"
        - "${NGINX_HOST_HTTPS_PORT}:443"

nginxの設定ファイルも変更。

vim nginx/sites/default.conf


    listen 80;
    listen [::]:80;
↓
    listen 8123;
    listen [::]:8123;

そして、再構築。

docker-compose up -d nginx mysql workspace phpmyadmin

MAMPが同時に稼働出来るのかテスト。

MAMPは80番を使っているので、行けた。 ※なぜか初期設定が88だった。なのに動いていた‥謎