May 4, 2021 • ☕️ 3 min read
オープンソースアプリケーションのテーブル定義書を出力して遊んでみよう! MONICA編。
ちなみに MONICA は、Laravelで作成されたオープンソースの CMS。
公式の Docker イメージはこちら。
https://hub.docker.com/_/monica/
Make sure to pass in values for APP_KEY variable before you run this setup.
とのことなので、そこは適当に埋めてみた。
version: "3.4"
services:
app:
image: monica
depends_on:
- db
ports:
- 8080:80
environment:
- APP_KEY=
- DB_HOST=db
volumes:
- data:/var/www/html/storage
restart: always
db:
image: mysql:5.7
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_DATABASE=monica
- MYSQL_USER=homestead
- MYSQL_PASSWORD=secret
volumes:
- mysql:/var/lib/mysql
restart: always
volumes:
data:
name: data
mysql:
name: mysql
起動するも、エラー
kaki@pckaki301 MONICA % docker-compose up -d
ERROR: In file './docker-compose.yml', service must be a mapping, not a NoneType.
どうやら、yaml ファイルの記述が誤っていると発生するエラーらしい。
が、「どこがおかしいか」まではエラーメッセージから読み取る事ができず。
「yaml を整形してくれる VSCode のプラグインって無いかな?」と探していたら、どうやら Prettier で出来るっぽいように感じてしまったが、単に設定ファイルを yaml で書けるというだけだったというオチで、余計な時間が溶けた。
docker.yml の構文チェックをしてくれるサービスがあったような無かったような気がしたが、見つけきれず。
仕方なく、どこが間違っているのか、泥臭く探して修正していくしかないか・・・と思ったら、こんなの見つけた。
(MONICA の github リポジトリ。Docker で起動する時についての記述)
https://github.com/monicahq/docker
docker-compose.yml Docker hub に記載している内容と違うやんけ!
と言うわけで、こっちを採用。
version: "3.4"
services:
app:
image: monica
depends_on:
- db
ports:
- 8080:80
environment:
- APP_KEY=
- DB_HOST=db
- DB_USERNAME=usermonica
- DB_PASSWORD=secret
volumes:
- data:/var/www/html/storage
restart: always
db:
image: mysql:5.7
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_DATABASE=monica
- MYSQL_USER=usermonica
- MYSQL_PASSWORD=secret
volumes:
- mysql:/var/lib/mysql
restart: always
volumes:
data:
name: data
mysql:
name: mysql
無事、起動。
あの苦労は何だったんだ一体・・・
と言う事で、あとは MySQL をローカルから接続できるように設定し、APP_KEY に適当な値を放り込んで、docker-compose up -d
最終的に作成した docker-compose.yml は、こんな感じ。
https://github.com/kakisoft/variety-of-tables-scheme-documentations/blob/main/MONICA/docker-compose.yml
出力したテーブル設計書は、これ。
https://github.com/kakisoft/variety-of-tables-scheme-documentations/blob/main/MONICA/tbls/doc/schema/README.md
今回は Dockerを使っていますが、前回は「適当にアプリケーションのモックを作成して、migration ファイルだけ放り込んで DB作り直せば行けるんじゃね?」と思ってやってみたが、意外と Model やらユーティリティ系もコピーする必要があったり、composer で色々と持ってこないといけなかったりと、なかなかカオスな状況になったので、今回は Docker を使った。
規模が小さいアプリだと、その方法でも何とかなるかもしれないが(Koelはその方法で行きました)、MONICA は結構規模が大きいので、素直に公式配布の Docker イメージを使う方が吉。