タイトルまんまなわけだが。
いままで、Jpsonic 専用サーバとして運用してたのが、なんだかもったいなく感じて、いっそのこと docker に乗っけてみるのはどうだろうと思った次第。 Subsonic でもやりかけてたけど、うまくいかなかったのであきらめていたのだが、調べてみると airsonic/Jpsonic では先人がいらっしゃったので、それに沿ってやってみようかと。
Docker / Docker Compose
これは公式情報に沿って導入。
- Get Docker Engine - Community for Ubuntu | Docker Documentation
- Install Docker Compose | Docker Documentation
Jpsonic をのっけてみる
JpsonicをDockerで動かす | sound of rudeness に沿ってやったけど、もともとの構成と同等にするためと、今後 Jpsonic のバージョンが上がった時に制御しやすいように、以下を変更した。
- ファイル構成
- 配置先を
~/docker/compose/jpsonic
にした (後述する systemd unit 化に備えて) jpsonic.war
ではなくjpsonic-jetty-embed.war
にした- Jpsonic のバージョン番号のフォルダを作成し、その中に
jpsonic-jetty-embed.war
をおいた install/target/dependency
には warファイルのコピーを置かずシンボリックリンクを置いた
- 配置先を
- Dockerfile 具体的に変えた部分は後述。
- docker-compose.yml
- ポート変更
- musicフォルダを先に用意したオブジェクトストレージのファイルシステム配下に変更
これらの試行のため、git で管理下はいいものの、勢い余って war ファイルを追加してしまったのであとでいろいろ困った。*1
Tips: Git で空のディレクトリを扱う方法
空のディレクトリを維持するための、 .gitkeep と .gitignore の使い分け - Qiita
.gitignore
でやる方法思いつかなかった。ずっと .gitkeep
派だった。
適材適所で使い分けられるようになりたい。
Systemd Unit 化
Add doker-compose as a systemd unit · GitHub を使用。docker-compose
のパスが /usr/bin
と /usr/local/bin
混在になっている点と、ワーキングディレクトリを作業用アカウントのホームディレクトリ配下にする点を調整した。
(…… Gist って、引用するとこうなるのか……以下の Gist は、修正したものではなく、参考にしたオリジナルです。)
おわり
大規模システムじゃなければ、これでも十分かなって、思った。
補足:Dockerfile 変更点抜粋
RUN apk --no-cache add \ ffmpeg \ lame \ bash \ libressl \ fontconfig \ ttf-dejavu \ font-noto-cjk \ ca-certificates \ tini \ curl \ openjdk8-jre \ tzdata && \ cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime RUN mkdir -p /usr/lib/jvm/java-1.8-openjdk/jre/lib/fonts/fallback && \ cd /usr/lib/jvm/java-1.8-openjdk/jre/lib/fonts/fallback && \ ln -s /usr/share/fonts/noto/NotoSansCJK-Regular.ttc . && \ ln -s /usr/share/fonts/noto/NotoSerifCJK-Regular.ttc . && \ ln -s /usr/share/fonts/noto/NotoSansCJK-Bold.ttc . && \ ln -s /usr/share/fonts/noto/NotoSerifCJK-Bold.ttc .