Skip to content

[Bug] 55-makemkv.sh doesn't check if a directory exists or not #249

Open
@Gonkers

Description

@Gonkers

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
Image

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions