Docker で FileMaker Server を立てる 2023

以前 Docker で FileMaker Server を立てたことを書いた。

その後は Photon OS の Docker で新たに立て直している。

最近 FileMaker Server の調子が悪く、日に1度はサーバーが止まり、FileMaker Server から "FMServer Error 701 Admin Server process has terminated abnormally." というタイトルの通知メールが届くようになった。Photon OS 自体の調子が悪くなっていたことと関係しているのかもしれない。

これを機にホストを別サーバー(Ubuntu)にし、さらに最新版の FileMaker Server にアップデートすることにした。

やり方は以前と同じだ。

要するに以下の公式マニュアルに従えば簡単にできてしまう。

Ubuntu 20.04 で FileMaker Server を Docker コンテナで実行する
https://community.claris.com/ja/s/article/Running-FileMaker-Server-in-a-Docker-container-for-Ubuntu-20-04

でも公式マニュアルが少し分かりにくい部分があるので、ここに改めてまとめ直してみる。なるべく丁寧にまとめたつもりだ。僕は Ubuntu の Docker にインストールしたが、Mac 等の Docker でも同様にできるはずだ。

なお、環境によっては後述する Dockerfile からのイメージ作成の段階でエラーが出て進めなくなることがあった。僕の場合は、Ubuntu Server 22.04.3 で発生した。代わりに Ubuntu 20.04.6 だとうまくいった。

環境:
・VMware vSphere Hypervisor 7.0U3g(英語環境)
・Ubuntu Server 20.04.6 LTS
・Docker 24.0.6
・FileMaker Server 20.1.2.207
・macOS Ventura 13.5(作業マシン)

(1)Docker をインストールしておく。

(2)Ubuntu 20.04 の Docker イメージをダウンロードする。

$ sudo docker pull ubuntu:20.04

(3)FileMaker Server 用のディレクトリを作成する。

僕は /docker/fms というディレクトリを作りたいので以下のコマンドを実行する。

$ mkdir -p docker/fms

fms ディレクトリへ移動。

$ cd docker/fms

(4)Dockerfile 用のディレクトリ df を作成、そこへ移動。

$ mkdir df && cd df

(5)Dockerfile という名前のファイルを作成。

$ sudo nano Dockerfile

以下の内容を記述し、保存。

FROM ubuntu:20.04

# update all software download sources
RUN DEBIAN_FRONTEND=noninteractive      \
    apt update
 
# upgrade all installed software
# packages
RUN DEBIAN_FRONTEND=noninteractive      \
    apt full-upgrade                 -y
 
# install filemaker server dependencies
RUN DEBIAN_FRONTEND=noninteractive      \
    apt install                      -y \
        acl                             \
        apache2-bin                     \
        apache2-utils                   \
        avahi-daemon                    \
        curl                            \
        firewalld                       \
        fonts-baekmuk                   \
        fonts-liberation2               \
        fonts-noto                      \
        fonts-takao                     \
        fonts-wqy-zenhei                \
        libaio1                         \
        libantlr3c-3.4-0                \
        libavahi-client3                \
        libboost-chrono1.71.0           \
        libboost-system1.71.0           \
        libboost-thread1.71.0           \
        libbz2-1.0                      \
        libc++1-12                      \
        libcurl3-gnutls                 \
        libcurl4-gnutls-dev             \
        libcurl4                        \
        libdjvulibre21                  \
        libetpan20                      \
        libevent-2.1-7                  \
        libexpat1                       \
        libfontconfig1                  \
        libfreetype6                    \
        libgomp1                        \
        libheif1                        \
        libicu66                        \
        libilmbase24                    \
        libjpeg-turbo8                  \
        liblqr-1-0                      \
        liblzma5                        \
        libodbc1                        \
        libomniorb4-2                   \
        libomp5-12                      \
        libopenexr24                    \
        libpam0g                        \
        libpng16-16                     \
        libsasl2-2                      \
        libtiff5                        \
        libuuid1                        \
        libvpx6                         \
        libwebpdemux2                   \
        libwebpmux3                     \
        libxml2                         \
        libxpm4                         \
        libxslt1.1                      \
        lsb-release                     \
        logrotate                       \
        nginx                           \
        odbcinst1debian2                \
        openjdk-11-jre                  \
        openssl                         \
        policycoreutils                 \
        sysstat                         \
        unzip                           \
        zip                             \
        zlib1g
 
# install user management
RUN DEBIAN_FRONTEND=noninteractive      \
    apt install                      -y \
        init
 
# clean up installations
RUN DEBIAN_FRONTEND=noninteractive      \
    apt --fix-broken install         -y
RUN DEBIAN_FRONTEND=noninteractive      \
    apt autoremove                   -y
RUN DEBIAN_FRONTEND=noninteractive      \
    apt clean                        -y
 
# document the ports that should be
# published when filemaker server
# is installed
EXPOSE 80
EXPOSE 443
EXPOSE 2399
EXPOSE 5003
 
# when containers run, start this
# command as root to initialize
# user management
USER root
CMD ["/sbin/init"]

公式マニュアルでは1行目が FROM amd64/ubuntu:20.04 となっているが、FROM ubuntu:20.04 に修正している。

(6)5をもとに、fmsdocker:prep イメージを作成する。

$ sudo docker build -t fmsdocker:prep .

(7)1つ上の階層へ移動。

$ cd ..

インストールファイルを入れる tmp ディレクトリ、およびデータベースを保存する Data ディレクトリ、ライセンスを入れる CStore ディレクトリ、ログを入れる Logs ディレクトリを作成する。

$ mkdir {tmp,Data,CStore,Logs}

(8)作業マシンである Mac にインストールファイルの filemaker-server-20.1.2.207-amd64.deb がある。これを以下のコマンドで、Ubuntu の /home/{ユーザー名}/docker/fms/tmp へ転送する(Terminal で新たに別ウィンドウで開いて作業)。

$ scp -r /{インストールファイルへのパス}/filemaker-server-20.1.2.207-amd64.deb {Ubuntu のユーザー名}@{Ubuntu の IP アドレス}:/home/{ユーザー名}/docker/fms/tmp

Ubuntu のパスワードを求められるので入力すると転送が始まる。

同様に LicenseCert.fmcert も同じディレクトリへ転送しておくとよい。

(9)以下のコマンドで、fmsdocker コンテナを作成、起動する。

$ sudo docker run                  \
    --detach                \
    --hostname   fms-docker \
    --name       fms-docker \
    --privileged            \
    --publish    80:80      \
    --publish    443:443    \
    --publish    2399:2399  \
    --publish    5003:5003  \
    --volume                \
        /home/{ユーザー名}/docker/fms/tmp:/install \
    --volume                \
        /home/{ユーザー名}/docker/fms/Data:"/opt/FileMaker/FileMaker Server/Data" \
    fmsdocker:prep

(10)設定支援インストールを使用するため、/home/{ユーザー名}/docker/fms/tmp に Assisted Install.txt を作成する。

$ sudo nano tmp/Assisted\ Install.txt

Assisted Install.txt は FileMaker Server のインストールファイルをダウンロードした際にサンプルファイルが入っている。以下のサイトを参考に記述する。

登録ファイルのカスタマイズ (FileMaker Server のみ) | Claris Server および FileMaker Server ネットワークインストールセットアップガイド
https://help.claris.com/ja/server-network-install-setup-guide/content/customize-personalization-file.html

僕は以下のようにした。License Certificate Path= は空欄にすることで tmp ディレクトリの中を見に来るようになる(そのため LicenseCert.fmcert を tmp に置いた)。

[Assisted Install]

License Accepted=1

Deployment Options=0

Admin Console User={ユーザー名}

Admin Console Password={パスワード}

Admin Console PIN={4桁の暗証番号}

License Certificate Path=

Filter Databases=1

Remove Desktop Shortcut=0

Remove Sample Database=0

(11)以下のコマンドでコンテナに入る。

$ sudo docker exec -it fms-docker /bin/bash

(12)以下のコマンドでインストールを実行する。

# cd /install
# FM_ASSISTED_INSTALL=/install apt install /install/filemaker-server-20.1.2.207-amd64.deb

最初に実行確認があるので return キーを押して続行する。

インストールが完了したら以下のコマンドでコンテナから抜ける。

# exit

(13)現在のコンテナから最終イメージ fmsdocker:final を作成する。

$ sudo docker commit fms-docker fmsdocker:final
$ sudo docker stop fms-docker
$ sudo docker container rm fms-docker

(14)最終的なコンテナを起動する。

$ sudo docker run                  \
    --detach                \
    --hostname   fms-docker \
    --name       fms-docker \
    --privileged            \
    --publish    80:80      \
    --publish    443:443    \
    --publish    2399:2399  \
    --publish    5003:5003  \
    --restart="always" \
    --volume                \
        /home/{ユーザー名}/docker/fms/Data:"/opt/FileMaker/FileMaker Server/Data" \
    --volume                \
        /home/{ユーザー名}/docker/fms/CStore:"/opt/FileMaker/FileMaker Server/CStore" \
    --volume                \
        /home/{ユーザー名}/docker/fms/Logs:"/opt/FileMaker/FileMaker Server/Logs" \
    fmsdocker:final

(15)以下のアドレスにアクセスすれば Admin Console に行ける。

http://{Ubuntu の IP アドレス}/admin-console

Assisted Install.txt で設定したユーザー名とパスワードでログインできる。最初に SSL 証明書について確認があるが、とりあえず Use the Claris default certificate を選択しておけばいい。"I Accept the Risk" で進む。

(16)ログインすると、右上の時刻が UTC になっているので日本時間に変更する必要がある。

再び fms-docker のコンテナ内に入る。

$ sudo docker exec -it fms-docker /bin/bash

以下のコマンドで日本時間に変更する。

# timedatectl set-timezone Asia/Tokyo

以下のコマンドで確認すると日本時間になっているのが分かる。

#date
Tue Sep 26 11:06:26 JST 2023

コンテナから抜け、fms-docker コンテナを再起動する。

# exit
$ sudo docker restart fms-docker

再び Admin Console にログインして右上の時刻を確認すると日本時間になっていることを確認できる。

これで FileMaker Server が通常通り使えるようになる。

SSL の設定が残っているが、僕はローカルでアクセスするだけなので、とりあえず設定は保留にしておいた。

参考:
階層の深いディレクトリをmkdirする方法 - Qiita
https://qiita.com/mitsuhiro_K/items/f4d5a1d79c8ec8a180a2

mkdirコマンドで複数のディレクトリを一気に作成 - いろいろ備忘録日記
https://devlights.hatenablog.com/entry/2021/01/02/154127

sshでファイル転送の手順 - Qiita
https://qiita.com/sayama0402/items/c5c2795968ced798150a


この記事が気に入ったらサポートをしてみませんか?