何度目の車輪の再発明かわからないけど、laravelの開発環境、及び本番環境もコンテナ運用する想定でのファイル構成を作った。
要件
- 開発環境はdocker-composeで一発で立ち上がるようにしたい
- 本番環境(production build)もコンテナを作れる様に。
- laravelは基本APIサーバになるので、swagger(Open API)に対応して、swagger-uiも使えるようにしたい
作ったやつ
/
├ docker ... 本番用docker構成ファイル群
├ docker_local ... 開発用docker構成ファイル群
├ laravel ... app本体
├ openapi.php ... openapi.ymlを更新するためのスクリプト
└ openapi.yml ... swagger-uiで使われる
解説
開発する時
- READMEどおりにsetup
-
docker_local
ディレクトリで$ docker-compose up
すると、5コンテナが立ち上がり開発スタート出来る -
laravel
ディレクトリのファイル編集したらhttp://localhost
で確認できる - mysqlはホストから、
$ mysql -uroot -p -h127.0.0.1 -P3306
でアクセス可能
コンテナ間通信はコンテナ名で行われる
app
,mysql
,redis
等
ホストからコンテナへのアクセスはポート番号。http://localhost
(80), mysqlは3306等
OpenAPI(swagger)について
-
http://localhost:8080
でswagger-uiにアクセス可能 - プロジェクトルートで、
$ php openapi.php
するとymlが更新され上記ui画面もリロードで確認可能
SwaggerがOpenAPIになったので、名称等もろもろ変わる過渡期
本番用コンテナビルド
-
docker
ディレクトリのdocker-compose.yml
を使う - 多分動かない。要調整