31
docker-compose 上の mautic で GeoLite2 の自動更新設定
上記の issue でも触れられていますが、mautic がデフォルトにしている MaxMind の GeoLite2 データセットがライセンスキーを必要とするようになったようです。

通常行う必要は無いですが、参考までに。
Issue にも貼られていた上記のページが対応方法になります。
上記をさらに docker に適用する方法が上記に提案されています。
今回はこれらをベースにします。
今回はこれらをベースにします。
ディレクトリ構成
Dockefile
GetIP.conf # MaxMind からダウンロードしたライセンスファイル
FROM mautic/mautic:v3
RUN apt-get update && wget https://github.com/maxmind/geoipupdate/releases/download/v4.6.0/geoipupdate_4.6.0_linux_amd64.deb \
&& dpkg -i geoipupdate_4.6.0_linux_amd64.deb && rm geoipupdate_4.6.0_linux_amd64.deb
COPY GeoIP.conf /etc/GeoIP.conf
RUN sed -i -e '/^"$@" &/i mkdir -p /var/www/html/app/cache/ip_data && geoipupdate -f /etc/GeoIP.conf -d /var/www/html/app/cache/ip_data && chown www-data.www-data -R /var/www/html/app/cache/ip_data' /entrypoint.sh
RUN sed -i '/iplookup/s/^/#/g' /etc/cron.d/mautic && \
echo ' 0 4 15 * * www-data geoipupdate -f /etc/GeoIP.conf -d /var/www/html/app/cache/ip_data > /var/log/cron.pipe 2>&1' >> /etc/cron.d/mautic
geoipupdate
に関しては現在 4.7.1 までリリースされているのでバージョンは指定できるようにした方が良いとは思いますが、ここでは上記の issue に合ったものをそのまま使います。Dockerfile
のポイントは以下です。/etc/cron.d/mautic
に geoipupdate
を使ったジョブを追加し、既存の更新処理をコメントアウト/entrypoint.sh
の事前処理の最後に、初回の GeoLite2 データセットのダウンロードを実行
-
/var/www/html/app
は/entrypoint.sh
内で構築されるため、Dockerfile
内で処理はできないため、ここに記述している
上記では最終的に
ip_data
を入れる先を /var/www/html/app/cache/ip_data
としています。$this->getDataDir().'/GeoLite2-City.mmdb'
$dataDir = $this->cacheDir.'/../ip_data';
AbstractLocalDataLookup
は AbstractLookup
を継承しており、初期化は以下の設定が反映されます。https://github.com/mautic/mautic/blob/de7e701ab2e498e7a8e5129e35a8fa482e1e2ff8/app/bundles/CoreBundle/Config/config.php#L927-L945
つまり、
例えば私の環境では以下のようになるので、上記の Dockerfile ではここが一致しません。
cacheDir
は kernel.cache_dir
になります。例えば私の環境では以下のようになるので、上記の Dockerfile ではここが一致しません。
/var/www/html/var/cache/ip_data
を指定しなければいけません。# bin/console debug:container --parameter=kernel.cache_dir
------------------ ------------------------------
Parameter Value
------------------ ------------------------------
kernel.cache_dir /var/www/html/var/cache/prod
------------------ ------------------------------