🍊

Pleasanter With Finch on M2 Macbook Air

2022/12/01に公開

2022 個人アドベントカレンダー の記事です。

課題感

  • 2022/12 現在、プリザンターを限界まで使いこなそうとすると SaaS では厳しい。
    • 拡張 SQL 、拡張 HTML 、拡張サーバスクリプトといった "拡張*" を実装するには、ファイルアクセス(ホスティングされている環境への OS レベルアクセス)が必要
    • ログ(SysLogs)の参照・取得のためにデータベースへの直接アクセスが必要
    • → ホスティング自体を委託できる(*1)としても、純粋な SaaS ではない
    • 逆に、オンプレミス環境でやる == ファイルでなければならない実装がしたいとき
      • → そこまでの要件があるか、は見極めが必要
  • この前提で開発者として欲しい環境
    • ファイルを触れる環境
    • → ファイルを触らなくてよいなら、検証はデモサイトで十分
      • サイトパッケージという設定の可搬性を強力に担保する機能 → ノーコードツールの GUI 設定の辛みへの現実解
    • → 過去の Docker 環境での公開事例は、いずれもコンテナのファイルシステムに閉じていた(*2)

⇒ アドベントカレンダーの最初の一手として、環境構築する

Install Finch

公式には、リリースパッケージを入れろと言っているが、既に homebrew の formulae があるので。

❯ brew install finch
❯ finch vm init
INFO[0000] Using default values due to missing config file at "/Users/papinianus/.finch/finch.yaml"
INFO[0000] "/Users/papinianus/.finch" directory doesn\'t exist, attempting to create it
INFO[0000] binaries directory doesn\'t exist
INFO[0000] Requesting root access to finish network dependency configuration
Password:
INFO[0006] sudoers file not found: %!w(*fs.PathError=&{open /etc/sudoers.d/finch-lima 2})
INFO[0006] Initializing and starting Finch virtual machine...
INFO[0200] Finch virtual machine started successfully
  • もし、以前に入れてたら sudo /Applications/Finch/uninstall.sh でアンインストール

フォルダ構造

Docker の設定ファイルは以下のようなかたちで構成。

  • /galapagos
    • /pleasanter
      • docker-compose.yml
      • /postgres
        • Dockerfile
      • /web
        • Dockerfile
        • /pleasanter

/web/pleasanter には、あらかじめ最新バージョンのリリースを展開しておきます。

設定ファイル

細かくは レポジトリ にて。

  • 気にしなかったところ
  1. データベースパスワード
    • Pleasanter のアプリファイルはクライアントから見える場所に置くので、直接設定する。環境変数とか Dockerfile での Rds.json のコピーとかは考えない。
  2. CodeDefiner
    • コンテナに入って実行する想定
    • → Dockerfile 内での RUN だと上手く実行できなかった。build 時にはコンテナには見えてないからか。
  • 気にしたところ
  1. データベース
    • ポートはホストに対して開放しない。こういう記事に惑わされるお気持ちユーザに対応するため。
    • pg_trgm はエントリポイントの sql が実行される仕組み。15 なので public スキーマへの GRANT を設定。
      • DB は SQL ではなく、環境変数に書いておくと作成してくれるのに任せる。
    • postgresql.conf を作ったけど、ログの書式だけだし、正直なくてもいいかも。
    • DB は名前付きボリューム。
  2. アプリ
    • 外から見えるようにバインドボリューム
    • ポートは 80 だと macOS と干渉しそうだったので、デフォルトの 5000 で。

finch でのコマンド

とくに docker/docker-compose と比べて、違和感が大きくて困ることはない。

  • 起動系

compose に - がつかないが、それだけ。

finch compose build --no-cache # 設定を変えたので --no-cache したが、実際は up --build で十分
finch compose up -d
  • 停止

down は docker-compose と同じだが停止は kill

finch compose kill
  • その他、基本コマンド
# 動作状態の確認
finch ps
# ボリュームの確認
finch volume ls
# コンテナへのアクセス
finch exec -it web bash

ラップアップ

動作確認

  • ログインの確認、テーブル・レコードの確認などざっくり調べて ok そう
  • とりあえず、添付ファイルをアップロードして ↓ に一時ファイルが置かれること、それがホスト側から見えることを確認
❯ ll ~/galapagos/pleasanter/web/pleasanter/Implem.Pleasanter/App_Data/Temp
total 0
drwxr-xr-x@ 3 papinianus  staff    96B 12  1 02:56 181AD90625B744DEB49ABD64EA314C52
drwxr-xr-x@ 3 papinianus  staff    96B 12  1 02:56 21B9F11C181C4B81853B3660C9CCD712

おわりに

  • Docker Desktop なくてもいけそう
  • コンテナで作るとミドルウェアを入れなくていいのは楽だけど、プリザンターはシステム設定がファイルベースだからアップデートがしんどいのと、相殺されてる
  • ToDo として、拡張スクリプトはこれまであまり試したことないのでやってみたさ。

参考にした情報

finch 関係

最初、パッケージから入れるのかーと思って眺めてたけど、早々に homebrew にきてて、流石仕事が早い AWS さん。

pg 関係

docker-compose.yml 関係

GitHubで編集を提案

Discussion