MichelFR / MqDockerUp

Mqtt Docker Updater (MqDockerUp) is a tool for updating Docker containers. It provides an easy way to check for updates and publish changes to a MQTT broker.
Apache License 2.0
67 stars 10 forks source link

HTTP code 400 unexpected: Duplicate mount point #154

Open hanfreakingsolo opened 1 year ago

hanfreakingsolo commented 1 year ago

I triggered an update for my plex container through home assistant. The image pulls fine and I see the container get renamed, but after a minute I see this error:

25.10.2023 14:26:54 [info]      Image pulled successfully
Container died: plex (4f0979a2e61aa4c572d2f54112fcf5f441724291fac4897c99c3d98f4f475773)
25.10.2023 14:27:29 [error]     MqDockerUp stopped due to an error
25.10.2023 14:27:29 [error]     object
25.10.2023 14:27:29 [error]     Error: (HTTP code 400) unexpected - Duplicate mount point: /PlexMedia 
    at /app/node_modules/docker-modem/lib/modem.js:343:17
    at getCause (/app/node_modules/docker-modem/lib/modem.js:373:7)
    at Modem.buildPayload (/app/node_modules/docker-modem/lib/modem.js:342:5)
    at IncomingMessage.<anonymous> (/app/node_modules/docker-modem/lib/modem.js:310:16)
    at IncomingMessage.emit (node:events:526:35)
    at IncomingMessage.emit (node:domain:489:12)
    at endReadableNT (node:internal/streams/readable:1359:12)
    at processTicksAndRejections (node:internal/process/task_queues:82:21)
MichelFR commented 1 year ago

It Seems like you mounted PlexMedia twice. Creating a Volume for /PlexMedia would probably fix that issue.

Closing for now

hanfreakingsolo commented 1 year ago

Error: (HTTP code 400) unexpected - Duplicate mount point

I have created a volume, docker compose up works without issue. Here is my compose file:

  plex:
    image: lscr.io/linuxserver/plex:latest
    container_name: plex
    network_mode: host
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
        limits:
          cpus: "0.75"
    environment:
      - PUID=568
      - PGID=568
      - TZ=America/Toronto
      - VERSION=docker
      - PLEX_CLAIM="redacted"
      - NVIDIA_VISIBLE_DEVICES=all
      - NVIDIA_DRIVER_CAPABILITIES=compute,video,utility      
    volumes:
      - ./plex/config:/config
      - ./plex/transcode:/transcode
      - PlexMedia:/PlexMedia
    restart: unless-stopped
volumes:
  downloads:
    driver_opts:
      type: "nfs"
      o: "addr=192.168.0.11,nfsvers=4"
      device: ":/mnt/truenasZ2/downloads/qbittorent"
  PlexMedia:
    driver_opts:
      type: "nfs"
      o: "addr=192.168.0.11,nfsvers=4"
      device: ":/mnt/truenasZ2/PlexMedia"
MichelFR commented 1 year ago

Thanks for sharing your solution!

hanfreakingsolo commented 1 year ago

Thanks for sharing your solution!

Sorry Michel maybe a misunderstanding. The above is my original compose file, this is what isn't working. I still get the duplicate mount point even with this configuration. Thanks in advance

MichelFR commented 1 year ago

could you please try ./PlexMedia:/PlexMedia

instead

PlexMedia:/PlexMedia

hanfreakingsolo commented 1 year ago

could you please try ./PlexMedia:/PlexMedia

instead

PlexMedia:/PlexMedia

Tried this, but unfortunately it is not a solution as this uses PlexMedia as a local bind mount rather than an NFS share volume. I've had too many headaches mounting my media to the host itself, so mounting in docker via a volume is the only solution. I don't quite understand how watchtower was able to update with this configuration but mqdockerup does not? I much prefer your app to watchtower! Thanks

MichelFR commented 1 year ago

Hmm could you please provide me the output of: docker inspect plex

I might not be handling volumes correctly.

In the next release I’m gonna add some more debug messages so we could analyze this. I’m also gonna try to fix it.

hanfreakingsolo commented 1 year ago
[
    {
        "Id": "da028f67e391ba1e7748ec707cdc4560f84f9a083d3e4d3124a170cf9199b57e",
        "Created": "2023-11-02T14:33:26.393347779Z",
        "Path": "/init",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2908487,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2023-11-02T14:33:30.984837246Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:31f912e2a484e3b0f5884ffab4cb4029fc7fcdfaca6afb2496cb26ded9bb759f",
        "ResolvConfPath": "/var/lib/docker/containers/da028f67e391ba1e7748ec707cdc4560f84f9a083d3e4d3124a170cf9199b57e/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/da028f67e391ba1e7748ec707cdc4560f84f9a083d3e4d3124a170cf9199b57e/hostname",
        "HostsPath": "/var/lib/docker/containers/da028f67e391ba1e7748ec707cdc4560f84f9a083d3e4d3124a170cf9199b57e/hosts",
        "LogPath": "/var/lib/docker/containers/da028f67e391ba1e7748ec707cdc4560f84f9a083d3e4d3124a170cf9199b57e/da028f67e391ba1e7748ec707cdc4560f84f9a083d3e4d3124a170cf9199b57e-json.log",
        "Name": "/plex",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/opt/mediaApps/plex/config:/config:rw",
                "/opt/mediaApps/plex/transcode:/transcode:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "host",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "unless-stopped",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": [],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 750000000,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": [
                {
                    "Driver": "nvidia",
                    "Count": 1,
                    "DeviceIDs": null,
                    "Capabilities": [
                        [
                            "gpu"
                        ]
                    ],
                    "Options": null
                }
            ],
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "Mounts": [
                {
                    "Type": "volume",
                    "Source": "mediaapps_PlexMedia",
                    "Target": "/PlexMedia",
                    "VolumeOptions": {}
                }
            ],
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/61cc89717e51e5eeb9b68d6e41bb25c32433acf672732bb8e17e7b442b463ca4-init/diff:/var/lib/docker/overlay2/f17a32765f6ab13bb7a5ceea072df91cbae22da7b4226e857277b96463630e56/diff:/var/lib/docker/overlay2/8c3165c5545ac1c9d42ae8381c816ae69f723bc95f1f25f2b8f90e41588b290e/diff:/var/lib/docker/overlay2/e227052077093f8cd21a629cc6effd8cdb53139ca96517936b27a90af439d9e7/diff:/var/lib/docker/overlay2/4b5207c68c16b18cb9ef5075a549aa773761b25bf83c5cf2355106bababd72c3/diff:/var/lib/docker/overlay2/3e948fa00bceeb4ac6244d58d32317e34e13f7fd10ba86fa4b1a40fbba00b9d3/diff:/var/lib/docker/overlay2/002d7df986f0b5d3261ed80fe43a59225521535a29790e9599877650e00eee85/diff:/var/lib/docker/overlay2/4d1320ad711cd67db3069d098551d39cfd25df2c8c50fefe4f730e53f2df017a/diff:/var/lib/docker/overlay2/b9fbb26567caa67a92477ff60c15b93cdaf61c4b366d9fc6566d3b2ec369fe38/diff:/var/lib/docker/overlay2/93b5a5ae15a2ee996d2d867c32b224a2e96b9697ad88594ab1806e1585bf473a/diff",
                "MergedDir": "/var/lib/docker/overlay2/61cc89717e51e5eeb9b68d6e41bb25c32433acf672732bb8e17e7b442b463ca4/merged",
                "UpperDir": "/var/lib/docker/overlay2/61cc89717e51e5eeb9b68d6e41bb25c32433acf672732bb8e17e7b442b463ca4/diff",
                "WorkDir": "/var/lib/docker/overlay2/61cc89717e51e5eeb9b68d6e41bb25c32433acf672732bb8e17e7b442b463ca4/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/opt/mediaApps/plex/transcode",
                "Destination": "/transcode",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "volume",
                "Name": "mediaapps_PlexMedia",
                "Source": "/var/lib/docker/volumes/mediaapps_PlexMedia/_data",
                "Destination": "/PlexMedia",
                "Driver": "local",
                "Mode": "z",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "bind",
                "Source": "/opt/mediaApps/plex/config",
                "Destination": "/config",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "ubuntuserver",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "1900/udp": {},
                "32400/tcp": {},
                "32410/udp": {},
                "32412/udp": {},
                "32413/udp": {},
                "32414/udp": {},
                "32469/tcp": {},
                "5353/udp": {},
                "8324/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PLEX_CLAIM=\"my-claim\"",
                "NVIDIA_VISIBLE_DEVICES=all",
                "NVIDIA_DRIVER_CAPABILITIES=compute,video,utility",
                "PUID=568",
                "PGID=568",
                "TZ=America/Toronto",
                "VERSION=docker",
                "PATH=/lsiopy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "HOME=/root",
                "LANGUAGE=en_US.UTF-8",
                "LANG=en_US.UTF-8",
                "TERM=xterm",
                "S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0",
                "S6_VERBOSITY=1",
                "S6_STAGE2_HOOK=/docker-mods",
                "VIRTUAL_ENV=/lsiopy",
                "LSIO_FIRST_PARTY=true",
                "DEBIAN_FRONTEND=noninteractive",
                "PLEX_DOWNLOAD=https://downloads.plex.tv/plex-media-server-new",
                "PLEX_ARCH=amd64",
                "PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR=/config/Library/Application Support",
                "PLEX_MEDIA_SERVER_HOME=/usr/lib/plexmediaserver",
                "PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6",
                "PLEX_MEDIA_SERVER_USER=abc",
                "PLEX_MEDIA_SERVER_INFO_VENDOR=Docker",
                "PLEX_MEDIA_SERVER_INFO_DEVICE=Docker Container (LinuxServer.io)"
            ],
            "Cmd": null,
            "Image": "lscr.io/linuxserver/plex:latest",
            "Volumes": {
                "/config": {}
            },
            "WorkingDir": "/",
            "Entrypoint": [
                "/init"
            ],
            "OnBuild": null,
            "Labels": {
                "build_version": "Linuxserver.io version:- 1.32.7.7621-871adbd44-ls192 Build-date:- 2023-10-30T20:26:57+00:00",
                "com.centurylinklabs.watchtower.enable": "true",
                "com.docker.compose.config-hash": "c0c09a4ee39127abe422cdee496d7ca1a2c7eca84370e7c4a8ed5a62a664d517",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "",
                "com.docker.compose.image": "sha256:31f912e2a484e3b0f5884ffab4cb4029fc7fcdfaca6afb2496cb26ded9bb759f",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "mediaapps",
                "com.docker.compose.project.config_files": "/opt/mediaApps/docker-compose.yaml",
                "com.docker.compose.project.working_dir": "/opt/mediaApps",
                "com.docker.compose.replace": "1b8437e90de2ee862a01f927eabf16617c0a31984cf80ab72daf6c3fa742163a",
                "com.docker.compose.service": "plex",
                "com.docker.compose.version": "2.21.0",
                "maintainer": "thelamer",
                "org.opencontainers.image.authors": "linuxserver.io",
                "org.opencontainers.image.created": "2023-10-30T20:26:57+00:00",
                "org.opencontainers.image.description": "[Plex](https://plex.tv) organizes video, music and photos from personal media libraries and streams them to smart TVs, streaming boxes and mobile devices. This container is packaged as a standalone Plex Media Server. Straightforward design and bulk actions mean getting things done faster.",
                "org.opencontainers.image.documentation": "https://docs.linuxserver.io/images/docker-plex",
                "org.opencontainers.image.licenses": "GPL-3.0-only",
                "org.opencontainers.image.ref.name": "02f8e58e475ca5951e65cd2513146876a885dcc9",
                "org.opencontainers.image.revision": "02f8e58e475ca5951e65cd2513146876a885dcc9",
                "org.opencontainers.image.source": "https://github.com/linuxserver/docker-plex",
                "org.opencontainers.image.title": "Plex",
                "org.opencontainers.image.url": "https://github.com/linuxserver/docker-plex/packages",
                "org.opencontainers.image.vendor": "linuxserver.io",
                "org.opencontainers.image.version": "1.32.7.7621-871adbd44-ls192"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "c68eb6b07758072f25696d3eb97b5a0e59c74c076ac1c9864694eeeb446b8033",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/default",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "host": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "0a0d8c9f1250d4f1b70dacf0ad2a8f3fe3b7c29a491d4f06e6596a6c2200d824",
                    "EndpointID": "f5fd469678f7ee837e1e28260e21193a4c308ab177ef557bf338e742ecde0a31",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]
pvh0 commented 10 months ago

Had the same issue here with the following docker command to startup the initial container:

docker run -it -p 8091:8091 -p 3000:3000 --name zwavejsui --device=/dev/ttyUSB-zwave:/dev/zwave --mount type=bind,source=/volume1/homes/username/docker/zwave2jsui/_data,target=/usr/src/app/store zwavejs/zwave-js-ui:latest

Modified the code so it looks like this (--mount changed to -v) and updating works flawlessly:

docker run -p 8091:8091 -p 3000:3000 --name zwavejsui --device=/dev/ttyUSB-zwave:/dev/zwave -v /volume1/homes/username/docker/zwave2jsui/_data:/usr/src/app/store zwavejs/zwave-js-ui:latest

Hope it helps with debugging