Docker で FileMaker Server を立てる 2024(失敗)

Hitoshi Arakawa | 2024/12/28 Sat 04:40

Docker で FileMaker Server を立てる方法を書いた。

Docker で FileMaker Server を立てる 2023|荒川仁志
https://note.com/hitoshiarakawa/n/n45593a042abb

しかしこの方法ではその後インストールがうまくいかないケースが多いと分かった。

Docker 版 FileMaker Server インストールテスト | 荒川仁志 公式サイト
https://www.hitoshiarakawa.com/blogs/2024/2024-12-27_docker-filemaker-server-installation-test/

現在は以下の最新の公式ガイド(英語)が公開されているので、Docker で FileMaker Server を立てる方法をまとめ直すことにした。

Running FileMaker Server in a Docker container for Ubuntu 22.04
https://support.claris.com/s/answerview?anum=000043656&language=en_US#install-dependencies

なお、現在の FileMaker Server では簡単に Docker 版の FileMaker Server がインストールするスクリプトが含まれている。しかし README.md を読んでやってもうまくいかなかったので、これまでと同じやり方での Docker インストールにすることにした。

以下のまとめは、分かりやすいように公式ガイドとは少し変えている。

(最初に書いておくと、最終的にはインストールはうまくいかなかった。)

環境:
・Proxmox  Version 8.3-1
・Ubuntu Server 22.04.2
・Docker version 27.4.0, build bde2b89
・FileMaker Server 2024(21.1.1)
・macOS Sequoia 15.0.1(作業マシン)

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

Ubuntu に Docker と docker-compose をインストールする|荒川仁志   https://note.com/hitoshiarakawa/n/na806c9f3c3fb

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

$ sudo docker pull ubuntu:22.04

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

僕は /docker/fms というディレクトリーを作りたいので以下のコマンドを実行する。さらにその fms ディレクトリーへ移動する。

$ mkdir -p docker/fms; cd docker/fms

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

$ mkdir df; cd df

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

$ sudo nano Dockerfile

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

FROM ubuntu:22.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 the FileMaker Server
# dependencies
RUN DEBIAN_FRONTEND=noninteractive      \
    apt install                      -y \
        acl                             \
        apache2-bin                     \
        apache2-utils                   \
        avahi-daemon                    \
        curl                            \
        fonts-baekmuk                   \
        fonts-liberation2               \
        fonts-noto                      \
        fonts-takao                     \
        fonts-wqy-zenhei                \
        libaio1                         \
        libantlr3c-3.4-0                \
        libavahi-client3                \
        libboost-chrono1.74.0           \
        libboost-system1.74.0           \
        libboost-thread1.74.0           \
        libbz2-1.0                      \
        libc++1-14                      \
        libcurl3-gnutls                 \
        libcurl4                        \
        libdjvulibre21                  \
        libetpan20                      \
        libevent-2.1-7                  \
        libexpat1                       \
        libfontconfig1                  \
        libfreetype6                    \
        libgomp1                        \
        libheif1                        \
        libicu70                        \
        libilmbase25                    \
        libjpeg-turbo8                  \
        liblqr-1-0                      \
        liblzma5                        \
        libodbc1                        \
        libomp5-14                      \
        libopencv-core4.5d              \
        libopencv-highgui4.5d           \
        libopencv-imgproc4.5d           \
        libopenexr25                    \
        libpam0g                        \
        libpng16-16                     \
        libsasl2-2                      \
        libtiff5                        \
        libuuid1                        \
        libvpx7                         \
        libwebpdemux2                   \
        libwebpmux3                     \
        libxml2                         \
        libxpm4                         \
        libxslt1.1                      \
        libzbar0                        \
        logrotate                       \
        nginx                           \
        odbcinst1debian2                \
        openjdk-17-jdk                  \
        openssl                         \
        policycoreutils                 \
        sysstat                         \
        ufw                             \
        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"]

(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-21.1.1.40-amd64.deb がある。これを以下のコマンドで、Ubuntu の /home/{ユーザー名}/docker/fms/tmp へ転送する(Terminal で新たに別ウィンドウで開いて作業)。

$ scp -r /{インストーラーのパス}/filemaker-server-21.1.1.40-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)設定支援インストール(an assisted installation)を使用するため、/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

僕は以下のようにした。

[Assisted Install]

License Accepted=1

Deployment Options=0

Admin Console User={Admin Console 用のユーザー名}

Admin Console Password={Admin Console 用のパスワード}

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

License Certificate Path={空欄にすることで tmp ディレクトリーの中を見に来るようになる。そのため8で LicenseCert.fmcert を tmp に置いた}

Filter Databases=1

Remove Desktop Shortcut=0

Remove Sample Database=0

Use HTTPS Tunneling=0

Load Previous Configuration=0

Swap File Size=4GB

Swappiness=10

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

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

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

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

しかしここで以下のようなメッセージが表示されて先に進めない。

Error  This package is meant for 20 or 22 and can’t be installed on .

試しにバージョン 20.3.2.205 の FileMaker Server のインストーラーを使ってみたが、それでも同じメッセージが出る。Ubuntu 22 用ではなく Ubuntu 20 用のインストーラーで試しても同じメッセージが出る。

Proxmox で Ubuntu 20 を別に立てて、そこでやるとうまくいくのかもしれないが試していない。

Docker は相性問題があったりややこしいので通常の Docker を使わない方法でインストールしようか。

参考:
Claris FileMaker 2024 Technical Specifications
https://support.claris.com/s/article/Claris-FileMaker-2024-Technical-Specifications?language=en_US

開発系エンジニアのためのDocker絵とき入門 | 鈴木亮 | 工学 | Kindleストア | Amazon
https://amzn.to/4fjqPc6