2025 Oct. 04.
2025 Sep. 23.
2025 Aug. 24.
container-init.shを用意する
参考: Docker版mirakurun:vim・ less・cron・ps組み込み、locale・タイムゾーン設定とcronの自動起動設定 - rokkonet
~/docker/docker-mirakurun-epgstation/mirakurun/container-init.sh
#!/bin/bash
export SERVER_CONFIG_PATH=/app-config/server.yml
export TUNERS_CONFIG_PATH=/app-config/tuners.yml
export CHANNELS_CONFIG_PATH=/app-config/channels.yml
export SERVICES_DB_PATH=/app-data/services.json
export PROGRAMS_DB_PATH=/app-data/programs.json
export LOGO_DATA_DIR_PATH=/app-data/logo-data
export PATH=/opt/bin:$PATH
export DOCKER=YES
export INIT_PID=$$
# tweaks for glibc memory usage
export MALLOC_ARENA_MAX=2
# trap
function trap_exit() {
echo "stopping... $(jobs -p)"
kill $(jobs -p) > /dev/null 2>&1 || echo "already killed."
/etc/init.d/pcscd stop
sleep 1
echo "exit."
}
trap "exit 0" 2 3 15
trap trap_exit 0
if [ ! -e "/opt/bin" ]; then
mkdir -pv /opt/bin
fi
# rename wrong filename (migration from <= 3.1.1 >= 3.0.0)
if [ -f "/app-data/services.yml" -a ! -f "$SERVICES_DB_PATH" ]; then
cp -v "/app-data/services.yml" "$SERVICES_DB_PATH"
fi
if [ -f "/app-data/programs.yml" -a ! -f "$PROGRAMS_DB_PATH" ]; then
cp -v "/app-data/programs.yml" "$PROGRAMS_DB_PATH"
fi
# custom startup script
if [ -e "/opt/bin/startup" ]; then
echo "executing /opt/bin/startup..."
/opt/bin/startup
echo "done."
fi
# only for test purpose
if !(type "arib-b25-stream-test" > /dev/null 2>&1); then
npm --prefix /opt install arib-b25-stream-test
ln -sv /opt/node_modules/arib-b25-stream-test/bin/b25 /opt/bin/arib-b25-stream-test
fi
if [ -e "/etc/init.d/pcscd" ]; then
while :; do
echo "starting pcscd..."
/etc/init.d/pcscd start
sleep 1
timeout 2 pcsc_scan | grep -A 50 "Using reader plug'n play mechanism"
if [ $? = 0 ]; then
break;
fi
echo "failed!"
done
fi
# start cron
echo "starting cron..."
service cron start
function start() {
if [ "$DEBUG" != "true" ]; then
export NODE_ENV=production
node -r source-map-support/register lib/server.js &
else
npm run debug &
fi
wait
}
function restart() {
echo "restarting... $(jobs -p)"
kill $(jobs -p) > /dev/null 2>&1 || echo "already killed."
sleep 1
start
}
trap restart 1
start
Dockerfileを作成する
dvbv5_channels_isdbs.confファイルの修正有無での記述の違いに注意する。
~/docker/docker-mirakurun-epgstation/mirakurun/my.Dockerfile
FROM chinachu/mirakurun:latest
# 一時、次のリポジトリ変更を要することがあった。
# Debian Buster の公式リポジトリを archive.debian.org に切り替え
# RUN echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/99no-check-valid-until \
# && sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list \
# && sed -i 's|http://deb.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list
# 次のCOPY行はdvbv5_channels_isdbs.confファイルを修正した時に記述する
#COPY ./conf/dvbv5_channels_isdbs.conf /app/config/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf
RUN apt-get update && apt-get install -y --no-install-recommends \
vim \
less \
cron \
curl \
jq \
ffmpeg \
locales \
tzdata \
procps \
&& rm -rf /var/lib/apt/lists/* \
&& echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=ja_JP.UTF-8 \
&& ln -snf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
&& echo Asia/Tokyo > /etc/timezone \
&& dpkg-reconfigure -f noninteractive tzdata \
&& touch /var/log/cron.log \
&& mkdir -p \
/app-recorded \
/app-data/bin \
/app-data/log
# /app-data/bin を PATH に追加
ENV PATH="/app-data/bin:${PATH}"
# replace container-init.sh with my container-init.sh
COPY ./container-init.sh /app/docker/container-init.sh
RUN chmod +x /app/docker/container-init.sh