LaradockでLaravel環境構築する体験が良くて他のプロジェクトでも導入しようとしたら
思いの外ハマったので、同じことで困っている人や昨日の自分に向けて
- docker 18.06.1-ce
- docker-compose 1.22.0
- macOS High Sierra 10.13.6
dockerのstorage等の保存先の変更
初期設定だと環境変数で、どのプロジェクトでも同じデータを参照してしまうので、MySQLが立ち上がらないなどの問題がでてくる。場所は.env
の14行目くらい
# DATA_PATH_HOST=~/.laradock/data
DATA_PATH_HOST=.laradock/data
プレフィックスを変更する
コンテナ名が被りコンテナボリューム内にデータが混在する可能性があるので33行目あたりを固有のプロジェクト名などに変更する。わたしは見事にlaradock_~のプレフィックスがついたコンテナが立ち上がりプロジェクトによってミドルウェアやドキュメントルートの変更ができずハマってしまった。
こちらは.env
の33行目あたり
# COMPOSE_PROJECT_NAME=laradock
COMPOSE_PROJECT_NAME=private-laradock
すでにコンテナが立ち上がっている場合はポートが被ってdocker-compose up
が失敗するので
書き換える前にdocker-compose stop
やdocker-compose down
をしてコンテナを止めて置く必要がある。
% docker-compose up -d apache2 mysql
% docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------
private-laradock_apache2_1 /opt/docker/bin/entrypoint ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
private-laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp
private-laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
private-laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
private-laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp```
おまけ
色々と試行錯誤していく中で変更が反映されない事がありdocker-compose build --no-cache
をやると
必要以上に時間が掛かるのでdocker-compose build --no-cache apache2 mysql
でサービス名を指定するのが吉。
(使わないサービスのイメージも再ビルドしてしまうのが原因)
参考
LaravelとLaradockを使ったチームでの開発環境を用意する vol.1 ~Laradock設定編~
Docker-docs-ja