Komga: [Bug] Error starting on docker version 0.64.3 for arm 32

Created on 30 Oct 2020  路  35Comments  路  Source: gotson/komga

Komga environment

  • OS: Raspbian
  • Komga version: 0.64.3
  • [x] I am running Komga with Docker

    • Docker image tag [e.g. latest, beta]: latest (0.64.3)

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

bug help wanted released

Most helpful comment

Working great here! thanks to all!

All 35 comments

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

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 ?

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

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.

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

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

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" } }

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.

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!

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.

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

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!

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 ^^

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.

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

@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.

@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.

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?

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 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.

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 馃檪

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.

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.

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

  • what is your hardware
  • which os you are running on that hardware

Thanks

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

  • Raspberry Pi 4 Model B Rev 1.2, 4 GB Ram
  • Booting from a Kingston SSD A400 120GB SATA 3

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!

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.

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.

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

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.

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

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

The release is available on:

Your semantic-release bot :package::rocket:

Working great here! thanks to all!

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

Was this page helpful?
0 / 5 - 0 ratings