Logs look like:
2026-05-13T06:57:20.7644530Z #32 113.2 [ Starting processing ]
2026-05-13T06:57:20.7645202Z #32 113.2 Starting process Setting data dir... (1/2)
2026-05-13T06:57:27.4953945Z #32 120.0 Starting process Setting admin password... (2/2)
2026-05-13T06:57:36.4242012Z #32 129.0 eXist version 6.3.0 (f040b832284f81f095e89c06fe9e30a78654dd9b), Copyright (C) 2001-2026 The eXist-db Project
2026-05-13T06:57:36.6092779Z #32 129.0 eXist-db comes with ABSOLUTELY NO WARRANTY.
2026-05-13T06:57:36.6095400Z #32 129.0 This is free software, and you are welcome to redistribute it
2026-05-13T06:57:36.6096714Z #32 129.0 under certain conditions; for details read the license file.
2026-05-13T06:57:36.6097497Z #32 129.0
2026-05-13T06:57:36.6097969Z #32 129.0 Connecting to database...
2026-05-13T06:57:45.4200475Z #32 138.0 Connection to database failed; message: configuration error: java.nio.file.FileSystemException: /opt/exist/data: Value too large for defined data type
2026-05-13T06:57:45.5904835Z #32 138.0 org.xmldb.api.base.XMLDBException: configuration error: java.nio.file.FileSystemException: /opt/exist/data: Value too large for defined data type
2026-05-13T06:57:45.5907851Z #32 138.0 at org.exist.xmldb.DatabaseImpl.configure(DatabaseImpl.java:131)
2026-05-13T06:57:45.5908972Z #32 138.0 at org.exist.xmldb.DatabaseImpl.getLocalCollection(DatabaseImpl.java:194)
2026-05-13T06:57:45.5910036Z #32 138.0 at org.exist.xmldb.DatabaseImpl.getCollection(DatabaseImpl.java:180)
2026-05-13T06:57:45.5911047Z #32 138.0 at org.exist.xmldb.DatabaseImpl.getCollection(DatabaseImpl.java:171)
2026-05-13T06:57:45.5912452Z #32 138.0 at org.xmldb.api.DatabaseManager.getCollection(DatabaseManager.java:235)
2026-05-13T06:57:45.5913513Z #32 138.0 at org.exist.client.InteractiveClient.connect(InteractiveClient.java:316)
2026-05-13T06:57:45.5914695Z #32 138.0 at org.exist.client.InteractiveClient.connectToDatabase(InteractiveClient.java:2153)
2026-05-13T06:57:45.5915861Z #32 138.0 at org.exist.client.InteractiveClient.run(InteractiveClient.java:2255)
2026-05-13T06:57:45.5917197Z #32 138.0 at org.exist.client.InteractiveClient.main(InteractiveClient.java:253)
2026-05-13T06:57:45.5918324Z #32 138.0 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2026-05-13T06:57:45.5919539Z #32 138.0 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2026-05-13T06:57:45.5920758Z #32 138.0 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2026-05-13T06:57:45.5921841Z #32 138.0 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
2026-05-13T06:57:45.5922760Z #32 138.0 at org.exist.start.Main.invokeMain(Main.java:153)
2026-05-13T06:57:45.5923523Z #32 138.0 at org.exist.start.Main.runEx(Main.java:292)
2026-05-13T06:57:45.5924248Z #32 138.0 at org.exist.start.Main.run(Main.java:158)
2026-05-13T06:57:45.5924962Z #32 138.0 at org.exist.start.Main.main(Main.java:95)
2026-05-13T06:57:45.5925855Z #32 138.0 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2026-05-13T06:57:45.5927245Z #32 138.0 at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
2026-05-13T06:57:45.5928494Z #32 138.0 at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
2026-05-13T06:57:45.5929571Z #32 138.0 at java.base/java.lang.reflect.Method.invoke(Unknown Source)
2026-05-13T06:57:45.5930918Z #32 138.0 at org.codehaus.mojo.appassembler.booter.AppassemblerBooter.executeMain(AppassemblerBooter.java:257)
2026-05-13T06:57:45.5932972Z #32 138.0 at org.codehaus.mojo.appassembler.booter.AppassemblerBooter.main(AppassemblerBooter.java:77)
2026-05-13T06:57:45.5934520Z #32 138.0 Caused by: org.exist.EXistException: java.nio.file.FileSystemException: /opt/exist/data: Value too large for defined data type
2026-05-13T06:57:45.5936306Z #32 138.0 at org.exist.storage.BrokerPool._initialize(BrokerPool.java:721)
2026-05-13T06:57:45.5937262Z #32 138.0 at org.exist.storage.BrokerPool.initialize(BrokerPool.java:451)
2026-05-13T06:57:45.5938221Z #32 138.0 at org.exist.storage.BrokerPools.configure(BrokerPools.java:177)
2026-05-13T06:57:45.5939156Z #32 138.0 at org.exist.storage.BrokerPools.configure(BrokerPools.java:131)
2026-05-13T06:57:45.5940094Z #32 138.0 at org.exist.xmldb.DatabaseImpl.configure(DatabaseImpl.java:125)
2026-05-13T06:57:45.5940853Z #32 138.0 ... 22 more
2026-05-13T06:57:45.5941984Z #32 138.0 Caused by: java.io.UncheckedIOException: java.nio.file.FileSystemException: /opt/exist/data: Value too large for defined data type
2026-05-13T06:57:45.5943397Z #32 138.0 at java.base/java.nio.file.FileTreeIterator.fetchNextIfNeeded(Unknown Source)
2026-05-13T06:57:45.5944457Z #32 138.0 at java.base/java.nio.file.FileTreeIterator.hasNext(Unknown Source)
2026-05-13T06:57:45.5945410Z #32 138.0 at java.base/java.util.Iterator.forEachRemaining(Unknown Source)
2026-05-13T06:57:45.5946714Z #32 138.0 at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
2026-05-13T06:57:45.5947875Z #32 138.0 at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
2026-05-13T06:57:45.5948966Z #32 138.0 at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
2026-05-13T06:57:45.5950114Z #32 138.0 at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(Unknown Source)
2026-05-13T06:57:45.5951213Z #32 138.0 at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
2026-05-13T06:57:45.5952234Z #32 138.0 at java.base/java.util.stream.ReferencePipeline.collect(Unknown Source)
2026-05-13T06:57:45.5953785Z #32 138.0 at org.exist.storage.recovery.RecoveryManager.recover(RecoveryManager.java:88)
2026-05-13T06:57:45.5955250Z #32 138.0 at org.exist.storage.BrokerPool.runRecovery(BrokerPool.java:808)
2026-05-13T06:57:45.5957041Z #32 138.0 at org.exist.storage.BrokerPool._initialize(BrokerPool.java:591)
2026-05-13T06:57:45.5957803Z #32 138.0 ... 26 more
2026-05-13T06:57:45.5958686Z #32 138.0 Caused by: java.nio.file.FileSystemException: /opt/exist/data: Value too large for defined data type
2026-05-13T06:57:45.5959904Z #32 138.0 at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source)
2026-05-13T06:57:45.5960895Z #32 138.0 at java.base/sun.nio.fs.UnixException.asIOException(Unknown Source)
2026-05-13T06:57:45.5962062Z #32 138.0 at java.base/sun.nio.fs.UnixDirectoryStream$UnixDirectoryIterator.readNextEntry(Unknown Source)
2026-05-13T06:57:45.5963371Z #32 138.0 at java.base/sun.nio.fs.UnixDirectoryStream$UnixDirectoryIterator.hasNext(Unknown Source)
2026-05-13T06:57:45.5964457Z #32 138.0 at java.base/java.nio.file.FileTreeWalker.next(Unknown Source)
2026-05-13T06:57:45.5965203Z #32 138.0 ... 38 more
2026-05-13T06:57:45.7726211Z #32 138.2 ------------------------
2026-05-13T06:57:45.7727004Z #32 138.2 Process execution failed
2026-05-13T06:57:45.7727904Z #32 138.2
2026-05-13T06:57:45.7728259Z #32 138.2 Continue anyway?
2026-05-13T06:57:45.7728629Z #32 138.2 ------------------------
2026-05-13T06:57:45.7729029Z #32 138.2 Enter Y for Yes, N for No:
2026-05-13T06:57:45.7729459Z #32 138.3 [ Console installation FAILED! ]
2026-05-13T06:57:45.9279358Z #32 138.3 WARNING: Cannot invoke "java.util.List.iterator()" because "this.files" is null
2026-05-13T06:57:46.2420599Z #32 138.7 chown: cannot read directory '/opt/exist/bin': Value too large for defined data type
2026-05-13T06:57:46.2424004Z #32 138.7 chown: cannot read directory '/opt/exist/logs': Value too large for defined data type
2026-05-13T06:57:46.2425195Z #32 138.7 chown: cannot read directory '/opt/exist/etc': Value too large for defined data type
2026-05-13T06:57:46.2426528Z #32 138.7 chown: cannot read directory '/opt/exist/data': Value too large for defined data type
2026-05-13T06:57:46.2432215Z #32 ERROR: process "/bin/sh -c apt-get update && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends curl pwgen zip patch && echo \"INSTALL_PATH=${EXIST_HOME}\" > \"/tmp/options.txt\" && echo \"MAX_MEMORY=${MAX_MEMORY}\" >> \"/tmp/options.txt\" && echo \"dataDir=${EXIST_DATA_DIR}\" >> \"/tmp/options.txt\" && curl -sL ${EXIST_URL} -o /tmp/exist.jar && java -jar \"/tmp/exist.jar\" -options \"/tmp/options.txt\" || true && rm -fr \"/tmp/exist.jar\" \"/tmp/options.txt\" ${EXIST_DATA_DIR}/* && sed -i 's/^${JAVA_RUN/exec ${JAVA_RUN/' ${EXIST_HOME}/bin/startup.sh && rm -rf /var/lib/apt/lists/* && rm -Rf ${EXIST_HOME}/etc/jetty/webapps/portal && chown -R wegajetty:wegajetty ${EXIST_HOME} && chmod 755 ${EXIST_HOME}/entrypoint.sh && find ${EXIST_HOME} -name log4j-core-*.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \\;" did not complete successfully: exit code: 1
2026-05-13T06:57:46.2438027Z
2026-05-13T06:57:46.2444260Z #35 [linux/arm64 9/9] RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends curl pwgen zip patch && echo "INSTALL_PATH=/opt/exist" > "/tmp/options.txt" && echo "MAX_MEMORY=2048" >> "/tmp/options.txt" && echo "dataDir=/opt/exist/data" >> "/tmp/options.txt" && curl -sL https://github.com/eXist-db/exist/releases/download/eXist-6.3.0/exist-installer-6.3.0.jar -o /tmp/exist.jar && java -jar "/tmp/exist.jar" -options "/tmp/options.txt" || true && rm -fr "/tmp/exist.jar" "/tmp/options.txt" /opt/exist/data/* && sed -i 's/^${JAVA_RUN/exec ${JAVA_RUN/' /opt/exist/bin/startup.sh && rm -rf /var/lib/apt/lists/* && rm -Rf /opt/exist/etc/jetty/webapps/portal && chown -R wegajetty:wegajetty /opt/exist && chmod 755 /opt/exist/entrypoint.sh && find /opt/exist -name log4j-core-*.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class ;
2026-05-13T06:57:46.2837375Z #35 CANCELED
2026-05-13T06:57:46.2837868Z ------
2026-05-13T06:57:46.2845545Z > [linux/arm/v7 9/9] RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends curl pwgen zip patch && echo "INSTALL_PATH=/opt/exist" > "/tmp/options.txt" && echo "MAX_MEMORY=2048" >> "/tmp/options.txt" && echo "dataDir=/opt/exist/data" >> "/tmp/options.txt" && curl -sL https://github.com/eXist-db/exist/releases/download/eXist-6.3.0/exist-installer-6.3.0.jar -o /tmp/exist.jar && java -jar "/tmp/exist.jar" -options "/tmp/options.txt" || true && rm -fr "/tmp/exist.jar" "/tmp/options.txt" /opt/exist/data/* && sed -i 's/^${JAVA_RUN/exec ${JAVA_RUN/' /opt/exist/bin/startup.sh && rm -rf /var/lib/apt/lists/* && rm -Rf /opt/exist/etc/jetty/webapps/portal && chown -R wegajetty:wegajetty /opt/exist && chmod 755 /opt/exist/entrypoint.sh && find /opt/exist -name log4j-core-*.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class ;:
2026-05-13T06:57:46.2851352Z 138.2
2026-05-13T06:57:46.2851755Z 138.2 Continue anyway?
2026-05-13T06:57:46.2852210Z 138.2 ------------------------
2026-05-13T06:57:46.2852608Z 138.2 Enter Y for Yes, N for No:
2026-05-13T06:57:46.2853005Z 138.3 [ Console installation FAILED! ]
2026-05-13T06:57:46.2853615Z 138.3 WARNING: Cannot invoke "java.util.List.iterator()" because "this.files" is null
2026-05-13T06:57:46.2854347Z : cannot read directory '/opt/exist/bin': Value too large for defined data type
2026-05-13T06:57:46.2855089Z 138.7 chown: cannot read directory '/opt/exist/logs': Value too large for defined data type
2026-05-13T06:57:46.2855829Z 138.7 chown: cannot read directory '/opt/exist/etc': Value too large for defined data type
2026-05-13T06:57:46.2856803Z 138.7 chown: cannot read directory '/opt/exist/data': Value too large for defined data type
2026-05-13T06:57:46.2857291Z ------
2026-05-13T06:57:46.2857594Z Dockerfile:52
2026-05-13T06:57:46.2857800Z --------------------
2026-05-13T06:57:46.2858222Z 51 | # main installation put into one RUN to squeeze image size
2026-05-13T06:57:46.2858661Z 52 | >>> RUN apt-get update \
2026-05-13T06:57:46.2859267Z 53 | >>> && apt-get dist-upgrade -y \
2026-05-13T06:57:46.2859823Z 54 | >>> && apt-get install -y --no-install-recommends curl pwgen zip patch \
2026-05-13T06:57:46.2860460Z 55 | >>> && echo "INSTALL_PATH=${EXIST_HOME}" > "/tmp/options.txt" \
2026-05-13T06:57:46.2861066Z 56 | >>> && echo "MAX_MEMORY=${MAX_MEMORY}" >> "/tmp/options.txt" \
2026-05-13T06:57:46.2862466Z 57 | >>> && echo "dataDir=${EXIST_DATA_DIR}" >> "/tmp/options.txt" \
2026-05-13T06:57:46.2864834Z 58 | >>> # install eXist-db
2026-05-13T06:57:46.2865488Z 59 | >>> # ending with true because java somehow returns with a non-zero after succesfull installing
2026-05-13T06:57:46.2866379Z 60 | >>> && curl -sL ${EXIST_URL} -o /tmp/exist.jar \
2026-05-13T06:57:46.2866981Z 61 | >>> && java -jar "/tmp/exist.jar" -options "/tmp/options.txt" || true \
2026-05-13T06:57:46.2867663Z 62 | >>> && rm -fr "/tmp/exist.jar" "/tmp/options.txt" ${EXIST_DATA_DIR}/* \
2026-05-13T06:57:46.2868474Z 63 | >>> # prefix java command with exec to force java being process 1 and receiving docker signals
2026-05-13T06:57:46.2869280Z 64 | >>> && sed -i 's/^${JAVA_RUN/exec ${JAVA_RUN/' ${EXIST_HOME}/bin/startup.sh \
2026-05-13T06:57:46.2869833Z 65 | >>> # clean up apt cache
2026-05-13T06:57:46.2870232Z 66 | >>> && rm -rf /var/lib/apt/lists/* \
2026-05-13T06:57:46.2870650Z 67 | >>> # remove portal webapp
2026-05-13T06:57:46.2871091Z 68 | >>> && rm -Rf ${EXIST_HOME}/etc/jetty/webapps/portal \
2026-05-13T06:57:46.2871573Z 69 | >>> # set permissions for the wegajetty user
2026-05-13T06:57:46.2872106Z 70 | >>> && chown -R wegajetty:wegajetty ${EXIST_HOME} \
2026-05-13T06:57:46.2872587Z 71 | >>> && chmod 755 ${EXIST_HOME}/entrypoint.sh \
2026-05-13T06:57:46.2873383Z 72 | >>> # remove JndiLookup class due to Log4Shell CVE-2021-44228 vulnerability
2026-05-13T06:57:46.2874350Z 73 | >>> && find ${EXIST_HOME} -name log4j-core-*.jar -exec zip -q -d {} org/apache/logging/log4j/core/lookup/JndiLookup.class \;
2026-05-13T06:57:46.2875162Z 74 |
2026-05-13T06:57:46.2875424Z --------------------
There's some discussion around "Value too large for defined data type" (see e.g. docker/buildx#395) but I couldn't find a proper fix.
Sticking with noble 6bc5ac8 fixes the issue for now but the goal should be to update to noble at some point …
For reference, this is how you can build an linux/arm/v7 image on your local machine:
docker buildx create --use
docker buildx build --platform linux/arm/v7 -t existdb:arm7 --build-arg BASE_IMAGE=eclipse-temurin:8-jre-noble .
Logs look like:
There's some discussion around "Value too large for defined data type" (see e.g. docker/buildx#395) but I couldn't find a proper fix.
Sticking with noble 6bc5ac8 fixes the issue for now but the goal should be to update to noble at some point …
For reference, this is how you can build an linux/arm/v7 image on your local machine:
docker buildx create --use docker buildx build --platform linux/arm/v7 -t existdb:arm7 --build-arg BASE_IMAGE=eclipse-temurin:8-jre-noble .