ひょんなことからSuiteCRMを動かしてみよう、と思い立ちました。
dockerで動かす
https://github.com/d9magai/docker-compose-suitecrm
こんな感じでvagrantで作った仮想マシンのdocker上で環境構築しました。
git cloneしてvagrant upすると構築できます。
php7.3を使ったときの警告
はじめはappはphp:7.3.6-fpm-alpine3.10で動かそうと思いました。
しかし次のような警告が発生して上手く動きませんでした。

意味はこんな感じですかね。「switchを対象とした"continue"は"break"と同じ。"continue 2"の意味で使いたかったのか?」
文章を読んでもよく分からないので調べたのですが、PHPは曖昧なcontinue文はPHP8から禁止する方針で7.3からwarningを表示するようになったっぽいです。
曖昧なcontinue文とは
continue文はループから抜ける為に利用しますが、switch文で使うとswitchからの脱出を表し、「このループから抜ける」つもりでcontinueを書いても、switch文内ではbreakの意味で動作していました。
while ($foo) {
switch ($bar) {
case "baz":
continue;
}
}
switchを抜けたかったらbreakを用いるべきす。私もそうしてきましたし。上位ブロックのループから抜ける為にcontinueを使いたかったらcontinue 2を使え、というwarningでした。 continue文は抜けるループのレベルを引数を指定できるみたいですね。PHP以外の言語では、switch文の中でcontinueを使うとPHPでいう所のcontinue 2の意味として動作します。この為、間違えやすい仕様であると長年指摘されてきました(らしいです)。
で、その辺の曖昧なところをPHP7.3では警告を出すようにしたって話ですね。
Warningで指摘されている箇所をcontinue 2;に書き換えるとうまく動いているように見えるのですが、本当に大丈夫なのかちょっと不安だったので、結局php:7.2.19-fpm-alpine3.9を使うことにしました。
で、あとはSuiteCRMの画面に従って操作をしていけば環境を構築できました。
その他のはまったポイント
いくつかはまった点があるので紹介したいと思います。
hirak/prestissimoを入れた後にcomposer installしたい
uid=$UID gid=$GID docker-compose run --rm -v /tmp/:/home/$(whoami) app sh -c "composer global require hirak/prestissimo && composer install"
これでいけました。hirak/prestissimoを入れる際に$HOMEにごにょごにょするみたいですが/etc/passwdと/etc/groupをマウントしてユーザをしているだけなのでホームディレクトリが無いんですよね。なので/tmpをホームディレクトリってことにすることでうまく動きました。
SuiteCRMの静的ファイルをnginxで配信できない
環境を構築するとSuiteCRMの静的ファイルが出来上がるのですがこれをnginxで配信できませんでした。理由はパーミッションです。そこで、nginx.confでrootで動かすという力業で解決しました。「動きゃあええねん」の精神だったのでこれで良しとしました。