背景
基本的に以下の先行事例と同じ動機。
- Running Lilypond on MacOS 10.15 (Catalina) | Kyle W. Baldwin
- macOS Catalinaで死んだLilypondをDocker上で動かす - Qiita
楽譜作成ソフトlilypondはmacOSの64bit版が存在しないためCatalina以降では実行できない。公式サイトには非公式バイナリも紹介されているが、いつまでメンテナンスされているかわからない。
ただし上記2サイトはdockerhubでイメージが管理され、いまいち現時点ではDockerfileの作り方もわからないDocker初心者にはよくわからないところもあったので、特に1つ目を参考にしつつ0から作れる方法を以下にメモ。
たぶんDocker hubを理解すればそちらの方が楽に思えるのだろうけれど。
環境はMacBook Air 13-inch 2018。
Dockerをインストールしてイメージを作成
Running Lilypondのページで紹介されているように Install Docker Desktop on MacからDockerのインストーラをダウンロードし、ドラッグアンドドロップでインストールしてDocker hubにアカウントを作成してログイン。ログインは必要ないかもしれない。
次に
% docker pull ubuntu
でイメージをダウンロードし、
% docker run -it ubuntu
でそのubuntuイメージからコンテナを作成・起動・アタッチ。オプション-itはそれぞれ標準入力利用可能と端末(TTY)利用可能。起動したままdettachしたい場合はCtrl+P, Ctro+Q。停止させたい場合はexit。
参考: Dockerコンテナの作成、起動〜停止まで - Qiita
lilypondをDockerコンテナ上にインストール
アタッチしたコンテナ上で
Kyle Baldwinさんのgithubにあるように、
- apt-get update
- apt-get install locales
- apt-get update
- apt-get install wget
- lilypondのバイナリをwget
- shでインストール。
% sh lilypond-2.20.0-1.linux-64.sh
以上でこのコンテナ上では普通にlilypondが実行できるようになった。
lilypondがインストールされたUbuntuコンテナをイメージとして保存する
Ctrl+P, Ctrl+Qでコンテナからdettachする。
Docker ps で起動しているコンテナの一覧を表示し、ハッシュ値を得て、docker コミットしてdocker-lilypondという名前のimageを作成。
% docker commit <hash> docker-lilypond
Dockerイメージ一覧にdocker-lilypondが表示された。
% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker-lilypond latest b77f9ee3467e 4 days ago 303MB
ubuntu latest 4e2eef94cd6b 2 weeks ago 73.9MB
Mac上からDockerコンテナ上のlilypondを実行して楽譜を取り出す
以下のコマンドで一回ごとにイメージを起動してlilypond を実行できる。カレントディレクトリ(pwd)を/app にマウントし、sample.lyファイルに対してlilypondコマンドを実行する。
% docker run --rm -v $(pwd):/app -w /app docker-lilypond lilypond sample.ly
すると端末にlilypondのメッセージが表示され、カレントにsample.pdfが作成される。このコマンドをファイルに保存してchmod +xして/usr/local/binに置く。
#! /bin/bash
docker run --rm -v "$(pwd)":/app -w /app docker-lilypond lilypond "$@"
以降は
lilypond.sh aaa.ly
でaaa.pdfが作成できる。 lilypond.sh --version
のような実行も可能。