Robpol86 / makemkv

Automated headless DVD/Bluray backups with MakeMKV from Docker.
https://hub.docker.com/r/robpol86/makemkv/
MIT License
28 stars 5 forks source link

Alpine Linux Container #4

Open BlinkyStitt opened 7 years ago

BlinkyStitt commented 7 years ago

We should try running this inside alpine instead of fedora to get a much smaller image size.

We can probably use the pre-built version: http://www.makemkv.com/download/makemkv-bin-1.10.5.tar.gz

But we might need to compile ourselves: http://www.makemkv.com/download/makemkv-oss-1.10.5.tar.gz

More about compiling at http://www.makemkv.com/forum2/viewtopic.php?f=3&t=224

Robpol86 commented 7 years ago

I wish I could get this working but wasn't able to today. Looks like the root cause is Alpine not shipping glibc, which makemkvcon links against.

I tried using https://hub.docker.com/r/frolvlad/alpine-glibc/ but apparently all of Alpine's packages won't work since they're not linked against glibc. Maybe one day in the future when alpine switches to glibc this will work better.

Some notes:

FROM frolvlad/alpine-glibc
MAINTAINER Robpol86 <robpol86@gmail.com>

RUN apk add --no-cache bash expat ffmpeg-libs libcrypto1.0 libstdc++ sudo && \
    ln -s /usr/lib/libcrypto.so.1.0.0 /usr/lib/libcrypto.so.10 && \
    ln -s /usr/lib/libssl.so.1.0.0 /usr/lib/libssl.so.10 && \
    ln -s /usr/lib/libtls.so.1.0.0 /usr/lib/libtls.so.10 && \
    ln -s /lib/libcrypto.so.1.0.0 /lib/libcrypto.so.10 && \
    ln -s /lib/libssl.so.1.0.0 /lib/libssl.so.10 && \
    adduser -Ds /sbin/nologin mkv && \
    addgroup mkv cdrom && \
    sudo -u mkv mkdir /home/mkv/.MakeMKV

COPY lib/libdriveio.so.0 /lib/libdriveio.so.0
COPY lib/libmakemkv.so.1 /lib/libmakemkv.so.1

VOLUME /output
WORKDIR /output
COPY bin/env.sh /env.sh
COPY bin/rip.sh /rip.sh
COPY etc/settings.conf /home/mkv/.MakeMKV/settings.conf
COPY lib/force_umask.so /force_umask.so

CMD ["/rip.sh"]
bash-4.3# ldd $(which makemkvcon) 
    /lib64/ld-linux-x86-64.so.2 (0x5652ceac6000)
    libmakemkv.so.1 => /lib/libmakemkv.so.1 (0x7f22e141c000)
    libdriveio.so.0 => /lib/libdriveio.so.0 (0x7f22e1215000)
    libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x5652ceac6000)
    libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x5652ceac6000)
    libdl.so.2 => /lib64/ld-linux-x86-64.so.2 (0x5652ceac6000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x7f22e0ec4000)
    librt.so.1 => /lib64/ld-linux-x86-64.so.2 (0x5652ceac6000)
    libcrypto.so.10 => /lib/libcrypto.so.10 (0x7f22e0aa4000)
    libz.so.1 => /lib/libz.so.1 (0x7f22e088e000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0x7f22e066e000)
    libavcodec.so.57 => /usr/lib/libavcodec.so.57 (0x7f22df2e7000)
    libavutil.so.55 => /usr/lib/libavutil.so.55 (0x7f22df074000)
    libm.so.6 => /lib64/ld-linux-x86-64.so.2 (0x5652ceac6000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x7f22dee62000)
    libswresample.so.2 => /usr/lib/libswresample.so.2 (0x7f22dec47000)
    libva.so.1 => /usr/lib/libva.so.1 (0x7f22dea2a000)
    libxvidcore.so.4 => /usr/lib/libxvidcore.so.4 (0x7f22de75e000)
    libx265.so.79 => /usr/lib/libx265.so.79 (0x7f22de0f8000)
    libx264.so.148 => /usr/lib/libx264.so.148 (0x7f22ddda1000)
    libvpx.so.3 => /usr/lib/libvpx.so.3 (0x7f22dd984000)
    libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x7f22dd6db000)
    libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x7f22dd4b4000)
    libtheoraenc.so.1 => /usr/lib/libtheoraenc.so.1 (0x7f22dd28b000)
    libtheoradec.so.1 => /usr/lib/libtheoradec.so.1 (0x7f22dd07d000)
    libopus.so.0 => /usr/lib/libopus.so.0 (0x7f22dce3a000)
    libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0x7f22dcbcf000)
    libva-drm.so.1 => /usr/lib/libva-drm.so.1 (0x7f22dc9cc000)
    libva-x11.so.1 => /usr/lib/libva-x11.so.1 (0x7f22dc7c6000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x7f22dc4a3000)
    libogg.so.0 => /usr/lib/libogg.so.0 (0x7f22dc29d000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0x7f22dc08e000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x7f22dbe7e000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x7f22dbc78000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x7f22dba52000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x7f22db84f000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x7f22db649000)
Error relocating /lib/libmakemkv.so.1: __stpcpy_chk: symbol not found
Error relocating /lib/libmakemkv.so.1: __strncat_chk: symbol not found
Error relocating /lib/libmakemkv.so.1: __sprintf_chk: symbol not found
Error relocating /lib/libmakemkv.so.1: __vsnprintf_chk: symbol not found
Error relocating /lib/libmakemkv.so.1: __strcpy_chk: symbol not found
Error relocating /lib/libdriveio.so.0: __fprintf_chk: symbol not found
Error relocating /lib/libdriveio.so.0: __memcpy_chk: symbol not found
Error relocating /lib/libdriveio.so.0: __strcat_chk: symbol not found
Error relocating /lib/libdriveio.so.0: __strcpy_chk: symbol not found
Error relocating /lib/libdriveio.so.0: __memset_chk: symbol not found
Error relocating /lib/libdriveio.so.0: __fdelt_chk: symbol not found
Error relocating /usr/bin/makemkvcon: _tolower: symbol not found
bash-4.3# makemkvcon --help
makemkvcon: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory
bash-4.3# LD_TRACE_LOADED_OBJECTS=1 makemkvcon --help
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by makemkvcon)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by makemkvcon)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libmakemkv.so.1)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libmakemkv.so.1)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libmakemkv.so.1)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libmakemkv.so.1)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libdriveio.so.0)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libdriveio.so.0)
makemkvcon: /usr/lib/libstdc++.so.6: no version information available (required by /lib/libdriveio.so.0)
    linux-vdso.so.1 (0x00007ffd71767000)
    libmakemkv.so.1 => /lib/libmakemkv.so.1 (0x00007f1b36cd7000)
    libdriveio.so.0 => /lib/libdriveio.so.0 (0x00007f1b36ad0000)
    libpthread.so.0 => /usr/glibc-compat/lib/libpthread.so.0 (0x00007f1b368b2000)
    libc.so.6 => /usr/glibc-compat/lib/libc.so.6 (0x00007f1b36518000)
    libdl.so.2 => /usr/glibc-compat/lib/libdl.so.2 (0x00007f1b36314000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f1b35fc3000)
    librt.so.1 => /usr/glibc-compat/lib/librt.so.1 (0x00007f1b35dbb000)
    libcrypto.so.10 => not found
    libz.so.1 => /lib/libz.so.1 (0x00007f1b35ba5000)
    libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f1b35985000)
    libavcodec.so.57 => /usr/lib/libavcodec.so.57 (0x00007f1b345fe000)
    libavutil.so.55 => /usr/lib/libavutil.so.55 (0x00007f1b3438b000)
    libm.so.6 => /usr/glibc-compat/lib/libm.so.6 (0x00007f1b3407b000)
    libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1b33e69000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f1b36f96000)
    libc.musl-x86_64.so.1 => /lib/libc.musl-x86_64.so.1 (0x00007f1b33bdc000)
    libswresample.so.2 => /usr/lib/libswresample.so.2 (0x00007f1b339c1000)
    libva.so.1 => /usr/lib/libva.so.1 (0x00007f1b337a4000)
    libxvidcore.so.4 => /usr/lib/libxvidcore.so.4 (0x00007f1b334d8000)
    libx265.so.79 => /usr/lib/libx265.so.79 (0x00007f1b32e72000)
    libx264.so.148 => /usr/lib/libx264.so.148 (0x00007f1b32b1b000)
    libvpx.so.3 => /usr/lib/libvpx.so.3 (0x00007f1b326fe000)
    libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00007f1b32455000)
    libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007f1b3222e000)
    libtheoraenc.so.1 => /usr/lib/libtheoraenc.so.1 (0x00007f1b32005000)
    libtheoradec.so.1 => /usr/lib/libtheoradec.so.1 (0x00007f1b31df7000)
    libopus.so.0 => /usr/lib/libopus.so.0 (0x00007f1b31bb4000)
    libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0x00007f1b31949000)
    libva-drm.so.1 => /usr/lib/libva-drm.so.1 (0x00007f1b31746000)
    libva-x11.so.1 => /usr/lib/libva-x11.so.1 (0x00007f1b31540000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f1b3121d000)
    libogg.so.0 => /usr/lib/libogg.so.0 (0x00007f1b31017000)
    libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f1b30e08000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f1b30bf8000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f1b309f2000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f1b307cc000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f1b305c9000)
    libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f1b303c3000)
bash-4.3# 

Lots of info: https://github.com/gliderlabs/docker-alpine/issues/11