<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Update app : Read-only file system]]></title><description><![CDATA[<p dir="auto">Hello,</p>
<p dir="auto">I’m encountering an issue when updating my custom app: I get a Read-only file system error, but I’m unsure why it only occurs during updates. The deployment to a new URL works fine, but when updating, I see the following error:</p>
<pre><code>Jul 28 17:00:02 mkdir: can't create directory '/certs/ca': Read-only file system
</code></pre>
<p dir="auto">My app is a Java application with the following Docker configuration:</p>
<pre><code>FROM cloudron/base:4.2.0@sha256:46da2fffb36353ef714f97ae8e962bd2c212ca091108d768ba473078319a47f4

RUN mkdir -p /app/code
WORKDIR /app/code

RUN apt-get update &amp;&amp; apt-get install -y openjdk-21-jdk-headless &amp;&amp; rm -rf /var/cache/apt /var/lib/apt/lists

# copy code
ADD ./cicd/start.sh /app/code/

COPY ./target/back-0.0.1-SNAPSHOT.jar /app/code/back.jar
COPY ./src/main/resources/application-prod.properties /app/code/application-prod.properties

CMD [ "/app/code/start.sh" ]
</code></pre>
<p dir="auto">The <a href="http://start.sh" target="_blank" rel="noopener noreferrer nofollow ugc">start.sh</a> script is as follows:</p>
<pre><code class="language-sh">#!/bin/bash

set -eu
chown -R cloudron:cloudron /app/data

echo "Starting app server"

exec gosu cloudron:cloudron java -jar myApp.jar --spring.profiles.active=prod
</code></pre>
<p dir="auto">During the first deployment, everything works correctly, and the app starts fine. However, when I update the JAR file, I encounter this error:</p>
<pre><code>Jul 28 17:03:03 mkdir: can't create directory '/certs/ca': Read-only file system
Jul 28 17:03:47 =&gt; Healtheck error: Error: Timeout of 7000ms exceeded
Jul 28 17:03:56 =&gt; Healtheck error: Error: connect EHOSTUNREACH 172.18.18.128:8080
</code></pre>
<p dir="auto">Here is the manifest used for deploying my app:</p>
<pre><code class="language-json">{
  "version": "0.0.2",
  "healthCheckPath": "/",
  "httpPort": 8080,
  "addons": {
    "localstorage": {},
    "postgresql": {},
    "redis": {}
  },
  "icon": "file://logo.png",
 "manifestVersion": 2
}
</code></pre>
<p dir="auto">I have checked various forums and the web but couldn’t find any solutions specific to my issue. Could anyone help me with this?</p>
<p dir="auto">Thanks and have a nice day!</p>
]]></description><link>https://forum.cloudron.io/topic/12182/update-app-read-only-file-system</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 06:05:43 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/12182.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Jul 2024 15:10:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Update app : Read-only file system on Wed, 31 Jul 2024 10:25:12 GMT]]></title><description><![CDATA[<p dir="auto">Glad you got it sorted out!</p>
]]></description><link>https://forum.cloudron.io/post/92063</link><guid isPermaLink="true">https://forum.cloudron.io/post/92063</guid><dc:creator><![CDATA[joseph]]></dc:creator><pubDate>Wed, 31 Jul 2024 10:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to Update app : Read-only file system on Tue, 30 Jul 2024 20:31:52 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/joseph" aria-label="Profile: joseph">@<bdi>joseph</bdi></a><br />
I found my problem. It was a typo (user error). When I was running the following command: <code>cloudron update --image [image_name] --app [name_app]</code>, I accidentally added an unexpected parameter, resulting in <code>cloudron update --image docker pull [image_name] --app [name_app]</code>. Naturally, this didn’t work, but I must admit I can’t explain why the error message was something other than a fail to load...</p>
<p dir="auto">Sorry again for the inconvenience.</p>
]]></description><link>https://forum.cloudron.io/post/92053</link><guid isPermaLink="true">https://forum.cloudron.io/post/92053</guid><dc:creator><![CDATA[[[global:former-user]]]]></dc:creator><pubDate>Tue, 30 Jul 2024 20:31:52 GMT</pubDate></item><item><title><![CDATA[Reply to Update app : Read-only file system on Tue, 30 Jul 2024 07:32:56 GMT]]></title><description><![CDATA[<p dir="auto">@stephan mysterious. Something somewhere is calling mkdir. Could it be an obsolete docker image? (maybe you didn't build?) Do you know anything about that line? Cloudron is just running the docker image... <s>Is your code/image public by any chance to have a look?</s> I guess it is the code that you posted and nothing else? If so, there is nothing here that calls mkdir.</p>
<p dir="auto">You can try this:</p>
<ul>
<li><code>cloudron debug</code> . This puts the app in debug mode, meaning it won't start.</li>
<li><code>cloudron exec</code> . You now get a shell into the container</li>
<li>Run <a href="http://start.sh" target="_blank" rel="noopener noreferrer nofollow ugc">start.sh</a> manually . Try to figure if mkdir is coming from here</li>
</ul>
]]></description><link>https://forum.cloudron.io/post/92018</link><guid isPermaLink="true">https://forum.cloudron.io/post/92018</guid><dc:creator><![CDATA[joseph]]></dc:creator><pubDate>Tue, 30 Jul 2024 07:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to Update app : Read-only file system on Mon, 29 Jul 2024 17:40:43 GMT]]></title><description><![CDATA[<p dir="auto">The mkdir error appear before Starting app server :</p>
<pre><code class="language-text">Jul 29 19:36:19 2024-07-29T17:36:19.712Z INFO 1 --- [API] [ionShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Jul 29 19:36:20 box:services teardownAddons: Tearing down []
Jul 29 19:36:20 box:tasks update 446: {"percent":45,"message":"Downloading icon"}
Jul 29 19:36:20 box:tasks update 446: {"percent":60,"message":"Updating addons"}
Jul 29 19:36:20 box:services setupAddons: Setting up ["localstorage","postgresql","redis"]
Jul 29 19:36:20 box:services setupAddons: setting up addon localstorage with options {}
Jul 29 19:36:20 box:services setupLocalStorage
Jul 29 19:36:20 box:shell createVolume /usr/bin/sudo -S /home/yellowtent/box/src/scripts/mkdirvolume.sh /home/yellowtent/appsdata/ca96d396-a77a-40a5-9ff8-707f40525bfa/data
Jul 29 19:36:20 box:services setupAddons: setting up addon postgresql with options {}
Jul 29 19:36:20 box:services Setting up postgresql
Jul 29 19:36:20 box:services Setting postgresql addon config to ...
Jul 29 19:36:20 box:services setupAddons: setting up addon redis with options {}
Jul 29 19:36:20 box:services Re-using existing redis container with state: {"Status":"running","Running":true,"Paused":false,"Restarting":false,"OOMKilled":false,"Dead":false,"Pid":380849,"ExitCode":0,"Error":"","StartedAt":"2024-07-29T17:32:35.671184747Z","FinishedAt":"0001-01-01T00:00:00Z"}
Jul 29 19:36:20 box:services Waiting for redis-ca96d396-a77a-40a5-9ff8-707f40525bfa
Jul 29 19:36:20 [GET] /healthcheck
Jul 29 19:36:20 box:tasks update 446: {"percent":70,"message":"Creating container"}
Jul 29 19:36:20 box:apptask createContainer: creating container
Jul 29 19:36:20 box:shell addLogrotateConfig /usr/bin/sudo -S /home/yellowtent/box/src/scripts/configurelogrotate.sh add ca96d396-a77a-40a5-9ff8-707f40525bfa /tmp/ca96d396-a77a-40a5-9ff8-707f40525bfa.logrotate
Jul 29 19:36:20 box:apptask startApp: starting container
Jul 29 19:36:21 mkdir: can't create directory '/certs/ca': Read-only file system
Jul 29 19:36:21 box:tasks update 446: {"percent":90,"message":"Configuring reverse proxy"}
Jul 29 19:36:21 box:tasks update 446: {"percent":100,"message":"Done"}
Jul 29 19:36:21 box:taskworker Task took 10.293 seconds
Jul 29 19:36:21 box:tasks setCompleted - 446: {"result":null,"error":null}
Jul 29 19:36:21 box:tasks update 446: {"percent":100,"result":null,"error":null}
Jul 29 19:36:21 mkdir: can't create directory '/certs/ca': Read-only file system
</code></pre>
<p dir="auto">In this exemple, i use the same docker image. Just execute and update with :</p>
<pre><code class="language-sh">cloudron update --image docker pull myapp.domain.com/myImageDocker:1.0 --app test-java
</code></pre>
]]></description><link>https://forum.cloudron.io/post/91995</link><guid isPermaLink="true">https://forum.cloudron.io/post/91995</guid><dc:creator><![CDATA[[[global:former-user]]]]></dc:creator><pubDate>Mon, 29 Jul 2024 17:40:43 GMT</pubDate></item><item><title><![CDATA[Reply to Update app : Read-only file system on Mon, 29 Jul 2024 16:33:26 GMT]]></title><description><![CDATA[<p dir="auto">@stephan I just noticed that you had a log line <code>Starting app server</code> . Does the mkdir error appear before or after log line ?</p>
]]></description><link>https://forum.cloudron.io/post/91993</link><guid isPermaLink="true">https://forum.cloudron.io/post/91993</guid><dc:creator><![CDATA[joseph]]></dc:creator><pubDate>Mon, 29 Jul 2024 16:33:26 GMT</pubDate></item><item><title><![CDATA[Reply to Update app : Read-only file system on Mon, 29 Jul 2024 16:31:12 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/joseph" aria-label="Profile: joseph">@<bdi>joseph</bdi></a>  The <a href="http://start.sh" target="_blank" rel="noopener noreferrer nofollow ugc">start.sh</a> file is entirety.<br />
The java app is a spring app with redis and postgres.<br />
In that case, why is it that on a first deployment I don't get the error and for the same version of the docker image I could get this error?</p>
<p dir="auto">I'll have another look, but even locally I don't create files, I expose an api and store data in the database.</p>
<p dir="auto">Thank for your answer.</p>
]]></description><link>https://forum.cloudron.io/post/91991</link><guid isPermaLink="true">https://forum.cloudron.io/post/91991</guid><dc:creator><![CDATA[[[global:former-user]]]]></dc:creator><pubDate>Mon, 29 Jul 2024 16:31:12 GMT</pubDate></item><item><title><![CDATA[Reply to Update app : Read-only file system on Mon, 29 Jul 2024 07:28:51 GMT]]></title><description><![CDATA[<p dir="auto">@stephan is that the entirety of <a href="http://start.sh" target="_blank" rel="noopener noreferrer nofollow ugc">start.sh</a> ? If so, <code>myApp.jar</code> is calling <code>mkdir</code> command at some point and trying to create a directory named <code>/certs/ca</code> . It's not allowed to create directories arbitrarily inside the container, that is why the command fails with EROFS.</p>
]]></description><link>https://forum.cloudron.io/post/91952</link><guid isPermaLink="true">https://forum.cloudron.io/post/91952</guid><dc:creator><![CDATA[joseph]]></dc:creator><pubDate>Mon, 29 Jul 2024 07:28:51 GMT</pubDate></item></channel></rss>