gotson / komga

Media server for comics/mangas/BDs/magazines/eBooks with API, OPDS and Kobo Sync support
https://komga.org
MIT License
4.09k stars 243 forks source link

[Bug] Error starting on docker version 0.64.3 for arm 32 #349

Closed alejandrofm closed 3 years ago

alejandrofm commented 4 years ago

Komga environment

Describe the bug

Image doesnt boot, docker console shows the error: No monotonic clock was available It worked fine with 0.64.2, I rollbacked to that version

grim7reaper commented 4 years ago

Same error as here. I guess the base image used by Komga was updated again and the regression came back :/

gotson commented 4 years ago

I saw some discussions on the base image issue tracker about failed updates of base image to migrate from one version of ubuntu to another, at about the same time the 0.64.3 release of Komga happened.

I just rebuilt the docker images and pushed again latest and 0.64.3.

Could you give it a try and let me know if that works ?

alejandrofm commented 4 years ago

Same error with latest: OpenJDK Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes Just to be sure I'm on ARMv7

gotson commented 4 years ago

I need to find a way to reproduce first, then try to fix it temporarily with a fixed version of the base image, and also raise the problem to the base image maintainers.

alejandrofm commented 4 years ago

I understand, and am here for any testing/logging can be done to help. Thanks!

gotson commented 4 years ago

I tried to run the armv7 image on my Macbook using qemu-user-static, and it works fine.

I'm using this image: gotson/komga@sha256:5201f8c6bcdba0821aafd81383b9ba7b5d9d3b8d51d30d4b315ce997fdfc7a00

Could you give a try with that particular image ?

docker run --rm -t gotson/komga@sha256:5201f8c6bcdba0821aafd81383b9ba7b5d9d3b8d51d30d4b315ce997fdfc7a00
alejandrofm commented 4 years ago

No luck, i'm runing them via portainer, sould make no difference, but... I'll show you the full configuration:


    "AppArmorProfile": "",
    "Args": [
        "org.springframework.boot.loader.JarLauncher"
    ],
    "Config": {
        "AttachStderr": false,
        "AttachStdin": false,
        "AttachStdout": false,
        "Cmd": null,
        "Domainname": "",
        "Entrypoint": [
            "java",
            "org.springframework.boot.loader.JarLauncher"
        ],
        "Env": [
            "PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "LANG=en_US.UTF-8",
            "LANGUAGE=en_US:en",
            "LC_ALL=en_US.UTF-8",
            "JAVA_VERSION=jdk-11.0.9+11",
            "JAVA_HOME=/opt/java/openjdk",
            "KOMGA_DATABASE_BACKUP_PATH=/config/database-backup.zip",
            "KOMGA_DATABASE_FILE=/config/database.sqlite",
            "SPRING_DATASOURCE_URL=jdbc:h2:/config/database.h2",
            "SPRING_ARTEMIS_EMBEDDED_DATA_DIRECTORY=/config/artemis",
            "LOGGING_FILE_NAME=/config/logs/komga.log"
        ],
        "ExposedPorts": {
            "8080/tcp": {}
        },
        "Hostname": "e6c16e012126",
        "Image": "gotson/komga@sha256:5201f8c6bcdba0821aafd81383b9ba7b5d9d3b8d51d30d4b315ce997fdfc7a00",
        "Labels": {},
        "OnBuild": null,
        "OpenStdin": false,
        "StdinOnce": false,
        "Tty": false,
        "User": "",
        "Volumes": {
            "/books": {},
            "/config": {},
            "/tmp": {}
        },
        "WorkingDir": "/app"
    },
    "Created": "2020-11-01T17:43:56.433200059Z",
    "Driver": "overlay2",
    "ExecIDs": [
        "e35240aabcad78bb35af055b471d0ce76cd0e3db16a360eb75d69364ab223b05"
    ],
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/447cdd1c36cb6d29a335b94d9484ce1fa29b0c5c4196dd6ee9188a1344799445-init/diff:/var/lib/docker/overlay2/7f0623f86904cc225ec4512d551b157b0c4d11e719276213f951bff30132d8af/diff:/var/lib/docker/overlay2/47e78a0624bb80e65ba916a5afd2497107a9cf06edd6de93553aa8642aba89e0/diff:/var/lib/docker/overlay2/b59f16e0dd6364ab372dff3096b23c987a34b3bc2fff7890bc68a9585c8b0dc6/diff:/var/lib/docker/overlay2/dae36256b12ab77d423102690a38d09a048a06a08c30586c7d7142392bf5e79a/diff:/var/lib/docker/overlay2/0d7d79400e7146b4ce9c8ba1efafb86e522b09da3fdc9d6d4bbc0eb3b58bb5f1/diff:/var/lib/docker/overlay2/d4513500a6fb8f46b86a8ae28454aca0b47c064f18e0e045ebc37d8e34e93ac5/diff:/var/lib/docker/overlay2/8f6e02a0ec5c243366df21fc28c82791d13eec8b4ad3447e5c65b98fef8d21b7/diff:/var/lib/docker/overlay2/6a4249076f77a90a2d7c7552bf1d02ec866d9e4140ae60f97a1fa65e68fdbcd7/diff:/var/lib/docker/overlay2/beae579c6795716d4686811a61fed0f43c07b3a685ccf969d401a992bdbc1a43/diff:/var/lib/docker/overlay2/8e12264fc76d6111a28d529b8dbdde4549a7260fc6bbee2bbc0f4e9da2f776db/diff",
            "MergedDir": "/var/lib/docker/overlay2/447cdd1c36cb6d29a335b94d9484ce1fa29b0c5c4196dd6ee9188a1344799445/merged",
            "UpperDir": "/var/lib/docker/overlay2/447cdd1c36cb6d29a335b94d9484ce1fa29b0c5c4196dd6ee9188a1344799445/diff",
            "WorkDir": "/var/lib/docker/overlay2/447cdd1c36cb6d29a335b94d9484ce1fa29b0c5c4196dd6ee9188a1344799445/work"
        },
        "Name": "overlay2"
    },
    "HostConfig": {
        "AutoRemove": false,
        "Binds": [
            "/srv/dev-disk-by-label-2TB_Rpi/komga/books:/books",
            "522788f890db61bedbc9d9b94f559240014139cf59029ba69e2152c17f73c0e7:/tmp",
            "/srv/dev-disk-by-label-2TB_Rpi/komga/config:/config"
        ],
        "BlkioDeviceReadBps": null,
        "BlkioDeviceReadIOps": null,
        "BlkioDeviceWriteBps": null,
        "BlkioDeviceWriteIOps": null,
        "BlkioWeight": 0,
        "BlkioWeightDevice": null,
        "CapAdd": [
            "AUDIT_WRITE",
            "CHOWN",
            "DAC_OVERRIDE",
            "FOWNER",
            "FSETID",
            "KILL",
            "MKNOD",
            "NET_BIND_SERVICE",
            "NET_RAW",
            "SETFCAP",
            "SETGID",
            "SETPCAP",
            "SETUID",
            "SYS_CHROOT"
        ],
        "CapDrop": [
            "AUDIT_CONTROL",
            "BLOCK_SUSPEND",
            "DAC_READ_SEARCH",
            "IPC_LOCK",
            "IPC_OWNER",
            "LEASE",
            "LINUX_IMMUTABLE",
            "MAC_ADMIN",
            "MAC_OVERRIDE",
            "NET_ADMIN",
            "NET_BROADCAST",
            "SYSLOG",
            "SYS_ADMIN",
            "SYS_BOOT",
            "SYS_MODULE",
            "SYS_NICE",
            "SYS_PACCT",
            "SYS_PTRACE",
            "SYS_RAWIO",
            "SYS_RESOURCE",
            "SYS_TIME",
            "SYS_TTY_CONFIG",
            "WAKE_ALARM"
        ],
        "Capabilities": null,
        "Cgroup": "",
        "CgroupParent": "",
        "ConsoleSize": [
            0,
            0
        ],
        "ContainerIDFile": "",
        "CpuCount": 0,
        "CpuPercent": 0,
        "CpuPeriod": 0,
        "CpuQuota": 0,
        "CpuRealtimePeriod": 0,
        "CpuRealtimeRuntime": 0,
        "CpuShares": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "DeviceCgroupRules": null,
        "DeviceRequests": null,
        "Devices": [],
        "Dns": [],
        "DnsOptions": null,
        "DnsSearch": null,
        "ExtraHosts": [],
        "GroupAdd": null,
        "IOMaximumBandwidth": 0,
        "IOMaximumIOps": 0,
        "Init": false,
        "IpcMode": "private",
        "Isolation": "",
        "KernelMemory": 0,
        "KernelMemoryTCP": 0,
        "Links": null,
        "LogConfig": {
            "Config": {},
            "Type": "json-file"
        },
        "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"
        ],
        "Memory": 0,
        "MemoryReservation": 0,
        "MemorySwap": 0,
        "MemorySwappiness": null,
        "NanoCpus": 0,
        "NetworkMode": "bridge",
        "OomKillDisable": null,
        "OomScoreAdj": 0,
        "PidMode": "",
        "PidsLimit": null,
        "PortBindings": {
            "8080/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "9991"
                }
            ]
        },
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyPaths": [
            "/proc/bus",
            "/proc/fs",
            "/proc/irq",
            "/proc/sys",
            "/proc/sysrq-trigger"
        ],
        "ReadonlyRootfs": false,
        "RestartPolicy": {
            "MaximumRetryCount": 0,
            "Name": "no"
        },
        "Runtime": "runc",
        "SecurityOpt": null,
        "ShmSize": 67108864,
        "UTSMode": "",
        "Ulimits": null,
        "UsernsMode": "",
        "VolumeDriver": "",
        "VolumesFrom": null
    },
    "HostnamePath": "/var/lib/docker/containers/02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b/hostname",
    "HostsPath": "/var/lib/docker/containers/02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b/hosts",
    "Id": "02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b",
    "Image": "sha256:0ed3a00dd21d60a0c79db7e5f8e1400ca492eb32690a5ad3ed5f41edeb2990c8",
    "LogPath": "/var/lib/docker/containers/02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b/02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b-json.log",
    "MountLabel": "",
    "Mounts": [
        {
            "Destination": "/config",
            "Mode": "",
            "Propagation": "rprivate",
            "RW": true,
            "Source": "/srv/dev-disk-by-label-2TB_Rpi/komga/config",
            "Type": "bind"
        },
        {
            "Destination": "/books",
            "Mode": "",
            "Propagation": "rprivate",
            "RW": true,
            "Source": "/srv/dev-disk-by-label-2TB_Rpi/komga/books",
            "Type": "bind"
        },
        {
            "Destination": "/tmp",
            "Driver": "local",
            "Mode": "z",
            "Name": "522788f890db61bedbc9d9b94f559240014139cf59029ba69e2152c17f73c0e7",
            "Propagation": "",
            "RW": true,
            "Source": "/var/lib/docker/volumes/522788f890db61bedbc9d9b94f559240014139cf59029ba69e2152c17f73c0e7/_data",
            "Type": "volume"
        }
    ],
    "Name": "/Komga",
    "NetworkSettings": {
        "Bridge": "",
        "EndpointID": "f0243b36c56ff48b8b44dfcba913f011ebd4d5508fd989f2f69541885dbacb1b",
        "Gateway": "172.17.0.1",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "HairpinMode": false,
        "IPAddress": "172.17.0.4",
        "IPPrefixLen": 16,
        "IPv6Gateway": "",
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "MacAddress": "02:42:ac:11:00:04",
        "Networks": {
            "bridge": {
                "Aliases": null,
                "DriverOpts": null,
                "EndpointID": "f0243b36c56ff48b8b44dfcba913f011ebd4d5508fd989f2f69541885dbacb1b",
                "Gateway": "172.17.0.1",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAMConfig": {},
                "IPAddress": "172.17.0.4",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "Links": null,
                "MacAddress": "02:42:ac:11:00:04",
                "NetworkID": "eb2aca75d4abecec375cb4b90242332514b8a840d73e39e96411ea00af5bc9bf"
            }
        },
        "Ports": {
            "8080/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "9991"
                }
            ]
        },
        "SandboxID": "6e8281424908b82197c229b682eed5f9af07b4ffe5598f18b8ecb534a9e6e18e",
        "SandboxKey": "/var/run/docker/netns/6e8281424908",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null
    },
    "Path": "java",
    "Platform": "linux",
    "Portainer": {
        "ResourceControl": {
            "Id": 59,
            "ResourceId": "02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b",
            "SubResourceIds": [],
            "Type": 1,
            "UserAccesses": [],
            "TeamAccesses": [],
            "Public": false,
            "AdministratorsOnly": true,
            "System": false
        }
    },
    "ProcessLabel": "",
    "ResolvConfPath": "/var/lib/docker/containers/02e352af8f424523ba49c69726e9969e217f0b616c513a6e35c540f09244197b/resolv.conf",
    "RestartCount": 0,
    "State": {
        "Dead": false,
        "Error": "",
        "ExitCode": 0,
        "FinishedAt": "0001-01-01T00:00:00Z",
        "OOMKilled": false,
        "Paused": false,
        "Pid": 32543,
        "Restarting": false,
        "Running": true,
        "StartedAt": "2020-11-01T17:43:58.365261479Z",
        "Status": "running"
    }
}```
gotson commented 4 years ago

Thanks for the details. Unfortunately without a proper repro it will be difficult to solve.

If you have basic skills in Java and Docker you could try troubleshooting the base image on your machine, like trying to run a simple hello world in Java with that base image, and see if it works or if you get the same error.

alejandrofm commented 4 years ago

Java isn't my preferred language but maybe I can give it a try...next weekend. I'am the only one with this problem? Maybe it's something on my side(?) Thanks!

gotson commented 4 years ago

A quick google search returned this: https://github.com/smartsheet-samples/docker-java-hello-world

The base image used in Komga is adoptopenjdk:11-jre-hotspot, it is a multi-arch image, so using it on an arm32 machine will pull the arm32 image.

gotson commented 4 years ago

Could you also check version 0.64.4 and confirm if the same problem happens?

alejandrofm commented 4 years ago

Could you also check version 0.64.4 and confirm if the same problem happens?

Same error, something changed between 0.64.2 and 0.64.3. I'm the only one with this issue? :P Thanks!

siddjellali commented 3 years ago

From my side! Everything is perfect :) I'm on the last version of Docker 'version 19.03.13, build 4484c46' on Synology.

Sorry for the last comment, refresh was not finish ^^

OIDAM98 commented 3 years ago

I have the same error running the latestversion from Docker. Running on a Rapsberry Pi 4, 4 GB Ram, Raspbian 32bits.

Same error:

OpenJDK Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes And the logs stay there forever.

Seems like version 0.64.1 and 0.64.2 does start the application.

OIDAM98 commented 3 years ago

@siddjellali did you get the latest version running with Docker?

siddjellali commented 3 years ago

@OIDAM98 yes https://github.com/gotson/komga/issues/349#issuecomment-728322469

OIDAM98 commented 3 years ago

@siddjellali can you share how did you do it? My docker command to start komga is:

docker run -d \
 --name=komga \
 -p 8100:8080 \
 -e PUID=1000 \
 -e PGID=1000 \
 -e SPRING_PROFILE_ACTIVE=claim \
 --mount type=bind,source=/srv/komga/config,target=/config \
 --mount type=bind,source=/media/multimedia/Multimedia/Manga,target=/books \
 --restart unless-stopped \
 gotson/komga:latest

Changed --user 1000:1000 to -e PUID=1000 \ -e PGID=1000, otherwise komga wouldn't have the permissions to create files.

And have to change the tag to 0.64.2 to run it. Leaving it with latest only yields the log message I mentioned before. I have the same Docker version as you.

gotson commented 3 years ago

@OIDAM98 PUID / PGID have no effect at all, those are variables used by linuxserver.io images. Your container is basically running as root

You probably have missing permissions on your mounts, if you want to run as non-root you need to get the ID of your user account (on host system), and ensure that account has access to the folders mounted in the container.

SPRING_PROFILE_ACTIVE=claim is not used anymore, you can remove it.

gotson commented 3 years ago

From my side! Everything is perfect :) I'm on the last version of Docker 'version 19.03.13, build 4484c46' on Synology.

Sorry for the last comment, refresh was not finish ^^

What's your synology model?

siddjellali commented 3 years ago

It's a DS918+ Please find below the docker compose i used 👍

version: "3.3"
services:
  komga:
    image: gotson/komga:latest
    container_name: komga
    networks:
      - t2_proxy
    environment:
      - PUID=1033
      - PGID=100
      - TZ=Europe/Paris
    volumes:
      - /volume1/docker/komga:/config
      - /volume1/Comics:/books
    ports:
      - 8055:8080
    restart: unless-stopped
    environment : 
     - JAVA_TOOL_OPTIONS=-Xmx4g

networks:
  t2_proxy:
    external: true

Regarding PUID and PGID, you have to create a user first in your syno, go to SSH and type command below to retreive the correct value :

$ id komga
uid=1031(komga) gid=100(users) groups=100(users)
OIDAM98 commented 3 years ago

@OIDAM98 PUID / PGID have no effect at all, those are variables used by linuxserver.io images. Your container is basically running as root

You probably have missing permissions on your mounts, if you want to run as non-root you need to get the ID of your user account (on host system), and ensure that account has access to the folders mounted in the container.

SPRING_PROFILE_ACTIVE=claim is not used anymore, you can remove it.

As you said, the problem was the ownership of the folders. The user ID I gave the container didn't have the permissions. Thanks for that tip!

On the other hand, I still get the same message running latest.

gotson commented 3 years ago

It's a DS918+

This is a x86 64 cpu. It's normal that it works with latest. I don't know why you arrived on this issue, but it has nothing to do with your cpu model. Glad it works for you, but please let's stay on topic here 🙂

gotson commented 3 years ago

I reiterate my request for help: if someone who owns a raspberry pi 32 bits, who has some understanding in docker and java, would be willing to help troubleshooting this issue, that would be appreciated. You can also reach me on Discord.

OIDAM98 commented 3 years ago

I can create a simple Hello World app in Scala and dockerize it using adoptopenjdk:11-jre-hotspot as base image to see if that's the source of the problem. I think by the end of the week I can do it, hopefully tomorrow.

gotson commented 3 years ago

For those who have the issue, could you please tell me :

Thanks

OIDAM98 commented 3 years ago

OS: Raspbian lite 10 armv7l 32 bits. Kernel: 5.4.72-v7l+ Docker: 19.03.13, build 4484c46 Hardware:

gotson commented 3 years ago

I can create a simple Hello World app in Scala and dockerize it using adoptopenjdk:11-jre-hotspot as base image to see if that's the source of the problem. I think by the end of the week I can do it, hopefully tomorrow.

Thanks, that would be helpful. If you manage to reproduce, it would help to go back in time with older versions of the base image to find out which ones work and which don't, and we can submit an issue on their github!

OIDAM98 commented 3 years ago

Hello! Sorry for the late response. I managed to create the docker container using adoptopenjdk:11-jre-hotspot as base image. It printed out the same message: OpenJDK Server VM warning: No monotonic clock was available - timed services may be adversely affected if the time-of-day clock changes but it also printed the Hello, World! statement after a few seconds (maybe 2 seconds to be precise).

docker-jdk-pi

So, maybe it just takes longer to set up komga and we have to wait longer to see anything in the console..? Or maybe a step during the initial set up of komga is lingering and is not outputting anything to STDOUT. I'm not quite sure.

gotson commented 3 years ago

The outcome is not important, it shows the same symptom, which is what we need to raise an issue upstream.

Do you have a link to the repo with the sample? That way I can raise the issue upstream.

OIDAM98 commented 3 years ago

Sure! Just created the repository, here's the link: https://github.com/OIDAM98/openjdk-docker-arm

gotson commented 3 years ago

I have published an image gotson/komga:bionic which could fix the problem.

If you have the issue mentioned above, please give it a try and let me know if that fixes the issue.

OIDAM98 commented 3 years ago

Will give it a try tomorrow and update to you about the results.

gotson commented 3 years ago

:tada: This issue has been resolved in version 0.64.6 :tada:

The release is available on:

Your semantic-release bot :package::rocket:

alejandrofm commented 3 years ago

Working great here! thanks to all!

OIDAM98 commented 3 years ago

Can confirm, working both bionic and 0.64.6 versions on RPi 4.