背景
脱ファイルサーバ!!個人でも会社でも使えるOSSのドキュメント管理システム!その名も「Alfresco」!
こちらの記事でAlfrescoを知り、へえ~こんなのあるんだ~、ちょいと試してみますかと思い立ったものの、
Alfrescoは構成要素が多く構築するだけで一苦労です。(インストーラーはかなりのことをしてくれますが、それでも)
構築が終わるころにはそれで満足してしまい、本来の目的である機能の検証がおろそかになってしまいがちではないでしょうか。
そこで、こんな時のコンテナやろがい!と、dockerの使いどころを求めていた私はdocker-compose.ymlをこしらえました。
構築が面倒な方はぜひ使ってみてください。
インストール手順は下記の記事をまるっと参考にさせて頂いております。
Alfrescoのインストール作業をコマンド単位で丁寧に記載します
reqired
ホストのメモリ >= 2GB
docker >= 1.10
docker-compose >= 1.6
docker-compose.yml
version: "2"
services:
nginx:
image: nginx
volumes:
- "./nginx/alfresco.conf:/etc/nginx/conf.d/alfresco.conf:ro"
ports:
- "80:80"
depends_on:
- alfresco
networks:
- flat-network
alfresco:
build: ./alfresco
expose:
- "8080"
depends_on:
- db
volumes:
- "alfresco-data:/opt/alfresco/alf_data/"
networks:
- flat-network
db:
image: mysql:5.7
volumes:
- "db-data:/var/lib/mysql"
- "./db/mysql/conf.d/:/etc/mysql/conf.d:ro"
environment:
MYSQL_ROOT_PASSWORD: "change_my_password"
MYSQL_DATABASE: "alfresco"
MYSQL_USER: "alfresco"
MYSQL_PASSWORD: "alfresco"
networks:
- flat-network
volumes:
db-data:
alfresco-data:
networks:
flat-network:
NginxとMySQLは公式イメージを利用して、Alfresoはビルドしています。
AlfrescoのDockerfileやその他付随するファイルが気になる方は https://github.com/muk-ai/docker-alfresco をご覧下さい。
Alfrescoもイメージを指定した方が速いですが、Community Editionのダウンロード前にユーザー登録があり、
勝手に埋め込むのはよくないと思ったのでこのようになりました。
データベースとAlfrescoのデータはVolumeを使って永続化しています。
動かしてみる
git clone https://github.com/muk-ai/docker-alfresco.git
cd docker-alfresco/
docker-compose up
上手く実行できていれば、ブラウザでport 80にアクセスするとログイン画面が表示されます。
adminのパスワードはalfresco/optionfile.txt
のalfresco_admin_password
で指定したものになります。適宜、変更下さい。
optionfile.txt
はAlfrescoのインストーラーに参照させるファイルです。
このファイルを変更した時はイメージのリビルド(docker-compose build alfresco
)を行ってください。
docker-compose.yml
のMYSQL_*
環境変数と、optionfile.txt
ファイルのjdbc_*
の値も必要に応じて変更して下さい。
雑感
メモリについて
メモリが2GB未満だとこんなメッセージが出てインストールが失敗します。
1.95 GB の RAM では、テストまたは本番環境で Alfresco を実行するには不十分です。
Alfresco が正しく動作しないことがあり、その場合は正常に機能しません。
サーバーの RAM を最低 2.0 GB にアップグレードしてください。推奨 RAM サイズは 4.0 GB です。
なくなく、t2.mediumを使いました。。
それでもけっこうもっさりしているのでチューニングが必要ですかね。
.soffice.bin
というプロセスがCPU100%になるのも原因わからず・・・
.soffice.bin
について
alfresco/Dockerfile
の中で一見、無意味なコマンドを打っているように見えますが
RUN /opt/alfresco/libreoffice/scripts/ctl.sh start || exit 0
このスクリプトの途中で実行される、/opt/alfresco/libreoffice/program/.soffice.bin
が必ず最初の1回だけ失敗して、
結果としてDockerコンテナが止まるので、この行を追加しました。理由は追えていません。
しかし、.soffice.bin
が動いてないとOfficeドキュメントのプレビュー機能が動かないのです。
Alfrescoイメージについて
公式イメージのように、adminのパスやらDBのアカウントやらを環境変数で渡すようにできるとよいのですが、
再利用可能なイメージを作るにはAlfresco自体への理解を深めないといけないのと、Docker職人のレベルを上げる必要を感じました。
Alfrescoを作っている人がDockerfileを用意してくれると嬉しいですね。試用までのハードルが下がります。