Current Behavior
This line of code creates a symlink to a directory that does not exist.
https://github.com/jlesage/docker-makemkv/blob/master/rootfs/etc/cont-init.d/55-makemkv.sh#L49
ln -s /config /config/.MakeMKV
Expected Behavior
if the config directory does not exist, then create it.
Steps To Reproduce
mount an empty volume and the config directory does not get created
services:
makemkv-1:
image: docker.io/jlesage/makemkv
container_name: makemkv1
environment:
- TZ=America/New_York
ports:
- "5800:5800"
volumes:
- "/video/rips/makemkv1:/config:rw"
- "/video/rips:/output:rw"
devices:
- "/dev/sr0:/dev/sr0"
- "/dev/sg1:/dev/sg1"
restart: unless-stopped
Environment
- OS:
- OS version:
- CPU:
- Docker version:
- Device model:
- Browser/OS:
Container creation
docker compose up
Container log
WARN[0000] Found orphan containers ([makemkv2]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
[+] Running 1/1
✔ Container makemkv1 Created 0.0s
Attaching to makemkv1
makemkv1 | [init ] container is starting...
makemkv1 | [cont-env ] loading container environment variables...
makemkv1 | [cont-env ] APP_NAME: loading...
makemkv1 | [cont-env ] APP_VERSION: loading...
makemkv1 | [cont-env ] DISPLAY: executing...
makemkv1 | [cont-env ] DISPLAY: terminated successfully.
makemkv1 | [cont-env ] DISPLAY: loading...
makemkv1 | [cont-env ] DOCKER_IMAGE_PLATFORM: loading...
makemkv1 | [cont-env ] DOCKER_IMAGE_VERSION: loading...
makemkv1 | [cont-env ] EGL_LOG_LEVEL: executing...
makemkv1 | [cont-env ] EGL_LOG_LEVEL: terminated successfully.
makemkv1 | [cont-env ] EGL_LOG_LEVEL: loading...
makemkv1 | [cont-env ] GSK_RENDERER: executing...
makemkv1 | [cont-env ] GSK_RENDERER: terminated successfully.
makemkv1 | [cont-env ] GSK_RENDERER: loading...
makemkv1 | [cont-env ] GTK2_RC_FILES: executing...
makemkv1 | [cont-env ] GTK2_RC_FILES: terminated successfully.
makemkv1 | [cont-env ] GTK2_RC_FILES: not setting variable.
makemkv1 | [cont-env ] GTK_THEME: executing...
makemkv1 | [cont-env ] GTK_THEME: terminated successfully.
makemkv1 | [cont-env ] GTK_THEME: not setting variable.
makemkv1 | [cont-env ] HOME: loading...
makemkv1 | [cont-env ] PULSE_CONFIG_PATH: executing...
makemkv1 | [cont-env ] PULSE_CONFIG_PATH: terminated successfully.
makemkv1 | [cont-env ] PULSE_CONFIG_PATH: not setting variable.
makemkv1 | [cont-env ] PULSE_COOKIE: executing...
makemkv1 | [cont-env ] PULSE_COOKIE: terminated successfully.
makemkv1 | [cont-env ] PULSE_COOKIE: not setting variable.
makemkv1 | [cont-env ] PULSE_SERVER: executing...
makemkv1 | [cont-env ] PULSE_SERVER: terminated successfully.
makemkv1 | [cont-env ] PULSE_SERVER: not setting variable.
makemkv1 | [cont-env ] QT_STYLE_OVERRIDE: executing...
makemkv1 | [cont-env ] QT_STYLE_OVERRIDE: terminated successfully.
makemkv1 | [cont-env ] QT_STYLE_OVERRIDE: not setting variable.
makemkv1 | [cont-env ] SUP_GROUP_IDS_INTERNAL: executing...
makemkv1 | [cont-env ] SUP_GROUP_IDS_INTERNAL: terminated successfully.
makemkv1 | [cont-env ] SUP_GROUP_IDS_INTERNAL: loading...
makemkv1 | [cont-env ] TAKE_CONFIG_OWNERSHIP: loading...
makemkv1 | [cont-env ] XDG_CACHE_HOME: loading...
makemkv1 | [cont-env ] XDG_CONFIG_HOME: loading...
makemkv1 | [cont-env ] XDG_DATA_HOME: loading...
makemkv1 | [cont-env ] XDG_RUNTIME_DIR: loading...
makemkv1 | [cont-env ] XDG_STATE_HOME: loading...
makemkv1 | [cont-env ] container environment variables initialized.
makemkv1 | [cont-secrets] loading container secrets...
makemkv1 | [cont-secrets] container secrets loaded.
makemkv1 | [cont-init ] executing container initialization scripts...
makemkv1 | [cont-init ] 10-certs.sh: executing...
makemkv1 | [cont-init ] 10-certs.sh: terminated successfully.
makemkv1 | [cont-init ] 10-check-app-niceness.sh: executing...
makemkv1 | [cont-init ] 10-check-app-niceness.sh: terminated successfully.
makemkv1 | [cont-init ] 10-clean-logmonitor-states.sh: executing...
makemkv1 | [cont-init ] 10-clean-logmonitor-states.sh: terminated successfully.
makemkv1 | [cont-init ] 10-clean-tmp-dir.sh: executing...
makemkv1 | [cont-init ] 10-clean-tmp-dir.sh: terminated successfully.
makemkv1 | [cont-init ] 10-fontconfig-cache-dir.sh: executing...
makemkv1 | [cont-init ] 10-fontconfig-cache-dir.sh: terminated successfully.
makemkv1 | [cont-init ] 10-init-users.sh: executing...
makemkv1 | [cont-init ] 10-init-users.sh: terminated successfully.
makemkv1 | [cont-init ] 10-nginx.sh: executing...
makemkv1 | [cont-init ] 10-nginx.sh: terminated successfully.
makemkv1 | [cont-init ] 10-openbox.sh: executing...
makemkv1 | [cont-init ] 10-openbox.sh: terminated successfully.
makemkv1 | [cont-init ] 10-pkgs-mirror.sh: executing...
makemkv1 | [cont-init ] 10-pkgs-mirror.sh: terminated successfully.
makemkv1 | [cont-init ] 10-pulse.sh: executing...
makemkv1 | [cont-init ] 10-pulse.sh: terminated successfully.
makemkv1 | [cont-init ] 10-set-tmp-dir-perms.sh: executing...
makemkv1 | [cont-init ] 10-set-tmp-dir-perms.sh: terminated successfully.
makemkv1 | [cont-init ] 10-vnc-password.sh: executing...
makemkv1 | [cont-init ] 10-vnc-password.sh: terminated successfully.
makemkv1 | [cont-init ] 10-web-data.sh: executing...
makemkv1 | [cont-init ] 10-web-data.sh: terminated successfully.
makemkv1 | [cont-init ] 10-webauth.sh: executing...
makemkv1 | [cont-init ] 10-webauth.sh: terminated successfully.
makemkv1 | [cont-init ] 10-x11-unix.sh: executing...
makemkv1 | [cont-init ] 10-x11-unix.sh: terminated successfully.
makemkv1 | [cont-init ] 10-xdg-runtime-dir.sh: executing...
makemkv1 | [cont-init ] 10-xdg-runtime-dir.sh: terminated successfully.
makemkv1 | [cont-init ] 15-cjk-font.sh: executing...
makemkv1 | [cont-init ] 15-cjk-font.sh: terminated successfully.
makemkv1 | [cont-init ] 15-install-pkgs.sh: executing...
makemkv1 | [cont-init ] 15-install-pkgs.sh: terminated successfully.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: executing...
makemkv1 | [cont-init ] 54-check-optical-drive.sh: looking for usable optical drives...
makemkv1 | [cont-init ] 54-check-optical-drive.sh: found optical drive 'HL-DT-ST BD-RE WH16NS40 1.00' [/dev/sr0, /dev/sg1]
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] associated SCSI Generic (sg) device detected: /dev/sg1.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] the host device /dev/sg1 is exposed to the container.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] the device /dev/sg1 has proper permissions.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] the container can write to device /dev/sg1.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] associated SCSI CD-ROM (sr) device detected: /dev/sr0.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] the host device /dev/sr0 is exposed to the container.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] the device /dev/sr0 has proper permissions.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] the container can write to device /dev/sr0.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: found optical drive 'PIONEER BD-RW BDR-212U 1.01' [/dev/sr1, /dev/sg2]
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] associated SCSI Generic (sg) device detected: /dev/sg2.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ ERR ] the host device /dev/sg2 is not exposed to the container.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ OK ] associated SCSI CD-ROM (sr) device detected: /dev/sr1.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: [ WARN ] the device /dev/sr1 is not exposed to the container.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: performance or ability to use the device will suffer.
makemkv1 | [cont-init ] 54-check-optical-drive.sh: terminated successfully.
makemkv1 | [cont-init ] 55-makemkv.sh: executing...
makemkv1 | [cont-init ] 55-makemkv.sh: generating machine-id...
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/settings.conf' -> '/config/settings.conf'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/QtProject.conf' -> '/config/xdg/config/QtProject.conf'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/gui_disc_rip_terminated.sh.example' -> '/config/hooks/gui_disc_rip_terminated.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/gui_disc_rip_started.sh.example' -> '/config/hooks/gui_disc_rip_started.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/gui_raw.sh.example' -> '/config/hooks/gui_raw.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/disc_rip_skipped.sh.example' -> '/config/hooks/disc_rip_skipped.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/disc_rip_started.sh.example' -> '/config/hooks/disc_rip_started.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/disc_rip_terminated.sh.example' -> '/config/hooks/disc_rip_terminated.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/automatic_disc_ripper_started.sh.example' -> '/config/hooks/automatic_disc_ripper_started.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks/disc_eject_failed.sh.example' -> '/config/hooks/disc_eject_failed.sh.example'
makemkv1 | [cont-init ] 55-makemkv.sh: '/defaults/hooks' -> '/config/hooks'
makemkv1 | [cont-init ] 55-makemkv.sh: checking for new beta key...
makemkv1 | [cont-init ] 55-makemkv.sh: updating registration key...
makemkv1 | [cont-init ] 55-makemkv.sh: terminated successfully.
makemkv1 | [cont-init ] 56-autodiscripper.sh: executing...
makemkv1 | [cont-init ] 56-autodiscripper.sh: terminated successfully.
makemkv1 | [cont-init ] 85-take-config-ownership.sh: executing...
makemkv1 | [cont-init ] 85-take-config-ownership.sh: terminated successfully.
makemkv1 | [cont-init ] 89-info.sh: executing...
makemkv1 | ╭――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╮
makemkv1 | │ │
makemkv1 | │ Application: MakeMKV │
makemkv1 | │ Application Version: 1.18.1 │
makemkv1 | │ Docker Image Version: 25.05.1 │
makemkv1 | │ Docker Image Platform: linux/amd64 │
makemkv1 | │ │
makemkv1 | ╰――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╯
makemkv1 | [cont-init ] 89-info.sh: terminated successfully.
makemkv1 | [cont-init ] all container initialization scripts executed.
makemkv1 | [init ] giving control to process supervisor.
makemkv1 | [supervisor ] loading services...
makemkv1 | [supervisor ] loading service 'default'...
makemkv1 | [supervisor ] loading service 'logmonitor'...
makemkv1 | [supervisor ] service 'logmonitor' is disabled.
makemkv1 | [supervisor ] loading service 'app'...
makemkv1 | [supervisor ] loading service 'gui'...
makemkv1 | [supervisor ] loading service 'xcompmgr'...
makemkv1 | [supervisor ] loading service 'openbox'...
makemkv1 | [supervisor ] loading service 'xvnc'...
makemkv1 | [supervisor ] loading service 'pulseaudio'...
makemkv1 | [supervisor ] service 'pulseaudio' is disabled.
makemkv1 | [supervisor ] loading service 'audiorecorder'...
makemkv1 | [supervisor ] service 'audiorecorder' is disabled.
makemkv1 | [supervisor ] loading service 'nginx'...
makemkv1 | [supervisor ] loading service 'webauth'...
makemkv1 | [supervisor ] service 'webauth' is disabled.
makemkv1 | [supervisor ] loading service 'certsmonitor'...
makemkv1 | [supervisor ] service 'certsmonitor' is disabled.
makemkv1 | [supervisor ] loading service 'logrotate'...
makemkv1 | [supervisor ] loading service 'autodiscripper'...
makemkv1 | [supervisor ] service 'autodiscripper' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-0'...
makemkv1 | [supervisor ] service 'autodiscripper-0' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-7'...
makemkv1 | [supervisor ] service 'autodiscripper-7' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-14'...
makemkv1 | [supervisor ] service 'autodiscripper-14' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-1'...
makemkv1 | [supervisor ] service 'autodiscripper-1' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-15'...
makemkv1 | [supervisor ] service 'autodiscripper-15' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-3'...
makemkv1 | [supervisor ] service 'autodiscripper-3' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-6'...
makemkv1 | [supervisor ] service 'autodiscripper-6' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-13'...
makemkv1 | [supervisor ] service 'autodiscripper-13' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-8'...
makemkv1 | [supervisor ] service 'autodiscripper-8' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-11'...
makemkv1 | [supervisor ] service 'autodiscripper-11' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-5'...
makemkv1 | [supervisor ] service 'autodiscripper-5' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-2'...
makemkv1 | [supervisor ] service 'autodiscripper-2' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-4'...
makemkv1 | [supervisor ] service 'autodiscripper-4' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-9'...
makemkv1 | [supervisor ] service 'autodiscripper-9' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-10'...
makemkv1 | [supervisor ] service 'autodiscripper-10' is disabled.
makemkv1 | [supervisor ] loading service 'autodiscripper-12'...
makemkv1 | [supervisor ] service 'autodiscripper-12' is disabled.
makemkv1 | [supervisor ] all services loaded.
makemkv1 | [supervisor ] starting services...
makemkv1 | [supervisor ] starting service 'xvnc'...
makemkv1 | [xvnc ] Xvnc TigerVNC 1.14.1 - built Feb 7 2025 21:11:05
makemkv1 | [xvnc ] Copyright (C) 1999-2024 TigerVNC Team and many others (see README.rst)
makemkv1 | [xvnc ] See https://www.tigervnc.org for information on TigerVNC.
makemkv1 | [xvnc ] Underlying X server release 12014000
makemkv1 | [xvnc ] Tue Jun 17 01:36:37 2025
makemkv1 | [xvnc ] vncext: VNC extension running!
makemkv1 | [xvnc ] vncext: Listening for VNC connections on /tmp/vnc.sock (mode 0660)
makemkv1 | [xvnc ] vncext: Listening for VNC connections on all interface(s), port 5900
makemkv1 | [xvnc ] vncext: created VNC server for screen 0
makemkv1 | [supervisor ] starting service 'openbox'...
makemkv1 | [supervisor ] starting service 'xcompmgr'...
makemkv1 | [supervisor ] starting service 'nginx'...
makemkv1 | [nginx ] Listening for HTTP connections on port 5800.
makemkv1 | [supervisor ] starting service 'app'...
makemkv1 | [supervisor ] all services started.
makemkv1 | [logrotate ] warning: state file /config/xdg/state/logrotate/logrotate.status is world-readable and thus can be locked from other unprivileged users. Skipping lock acquisition...
makemkv1 | [logrotate ] error: error setting mode of /config/xdg/state/logrotate/logrotate.status.tmp: Operation not permitted
makemkv1 | [supervisor ] service 'logrotate' exited (with status 1).
Container inspect
Anything else?
No response
Current Behavior
This line of code creates a symlink to a directory that does not exist.
https://github.com/jlesage/docker-makemkv/blob/master/rootfs/etc/cont-init.d/55-makemkv.sh#L49
Expected Behavior
if the
configdirectory does not exist, then create it.Steps To Reproduce
mount an empty volume and the config directory does not get created
Environment
Container creation
docker compose up
Container log
Container inspect
Anything else?
No response