mirror of
https://github.com/alexbelgium/hassio-addons.git
synced 2026-07-18 03:50:32 +02:00
maintainerr: replace /opt/data with /config/data in Dockerfile and ha_entrypoint
Agent-Logs-Url: https://github.com/alexbelgium/hassio-addons/sessions/21b5a0d9-5483-4227-b0f2-e047708cfbca Co-authored-by: alexbelgium <44178713+alexbelgium@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
cbf73c34dc
commit
c5b212bf47
@@ -64,7 +64,8 @@ COPY --from=ha_tools /out/ /
|
|||||||
# Add rootfs
|
# Add rootfs
|
||||||
COPY rootfs/ /
|
COPY rootfs/ /
|
||||||
RUN chmod +x /entrypoint.sh \
|
RUN chmod +x /entrypoint.sh \
|
||||||
&& find /etc/cont-init.d /etc/cont-finish.d -type f -name "*.sh" -exec chmod +x {} \; 2>/dev/null || true
|
&& find /etc/cont-init.d /etc/cont-finish.d -type f -name "*.sh" -exec chmod +x {} \; 2>/dev/null || true \
|
||||||
|
&& find / -type f \( -name "*.js" -o -name "*.ts" -o -name "*.json" -o -name "*.sh" -o -name "*.yml" -o -name "*.yaml" -o -name "*.env" -o -name "*.conf" -o -name "*.cfg" \) ! -path "/proc/*" ! -path "/sys/*" ! -path "/dev/*" -exec grep -l "/opt/data" {} \; 2>/dev/null | xargs -r sed -i 's|/opt/data|/config/data|g'
|
||||||
|
|
||||||
# Install bashio standalone
|
# Install bashio standalone
|
||||||
RUN BASHIO_VERSION="0.14.3" && \
|
RUN BASHIO_VERSION="0.14.3" && \
|
||||||
|
|||||||
@@ -18,11 +18,10 @@ if [ -d /etc/cont-init.d ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# ─── Setup persistent data directory ─────────────────────────────────────────
|
# ─── Setup persistent data directory ─────────────────────────────────────────
|
||||||
# The upstream app hardcodes /opt/data for its database and logs
|
# The upstream app hardcodes /opt/data for its database and logs.
|
||||||
# (typeOrmConfig.ts → /opt/data/maintainerr.sqlite, logs → /opt/data/logs/).
|
# The Dockerfile rewrites all /opt/data references to /config/data at build time.
|
||||||
# /opt/data is declared as a Docker VOLUME in the upstream image, which is NOT
|
# At runtime we copy any seed data from /opt/data to /config/data (persistent
|
||||||
# persistent across addon updates/reinstalls in HA.
|
# via addon_config:rw) without overwriting existing files.
|
||||||
# Redirect /opt/data → /config (persistent via addon_config:rw) with a symlink.
|
|
||||||
DATA_DIR="/config/data"
|
DATA_DIR="/config/data"
|
||||||
echo "[Maintainerr] Setting up data directory: $DATA_DIR"
|
echo "[Maintainerr] Setting up data directory: $DATA_DIR"
|
||||||
mkdir -p "$DATA_DIR"
|
mkdir -p "$DATA_DIR"
|
||||||
@@ -30,22 +29,12 @@ mkdir -p "$DATA_DIR"/logs
|
|||||||
chmod -R 777 "$DATA_DIR"
|
chmod -R 777 "$DATA_DIR"
|
||||||
chown -R node:node "$DATA_DIR"
|
chown -R node:node "$DATA_DIR"
|
||||||
|
|
||||||
# Preserve any seed data from the Docker volume before replacing it.
|
# Copy any seed/existing data from /opt/data to /config/data (don't overwrite)
|
||||||
# /opt/data is a Docker VOLUME mount and cannot be removed, so instead of
|
if [ -d /opt/data ] && [ "$(ls -A /opt/data 2>/dev/null)" ]; then
|
||||||
# replacing the directory with a symlink, we symlink each item inside it.
|
echo "[Maintainerr] Copying existing files from /opt/data to $DATA_DIR..."
|
||||||
if [ -d /opt/data ] && [ ! -L /opt/data ]; then
|
|
||||||
cp -rn /opt/data/. "$DATA_DIR/" 2>/dev/null || true
|
cp -rn /opt/data/. "$DATA_DIR/" 2>/dev/null || true
|
||||||
# Remove contents inside /opt/data (the directory itself stays)
|
|
||||||
rm -rf /opt/data/*
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create symlinks for each item in $DATA_DIR inside /opt/data
|
|
||||||
for item in "$DATA_DIR"/*; do
|
|
||||||
[ -e "$item" ] || continue
|
|
||||||
name="$(basename "$item")"
|
|
||||||
ln -sfn "$item" "/opt/data/$name"
|
|
||||||
done
|
|
||||||
|
|
||||||
# Only chown on first run to avoid slow startup on large directories
|
# Only chown on first run to avoid slow startup on large directories
|
||||||
if [ ! -f "$DATA_DIR/.initialized" ]; then
|
if [ ! -f "$DATA_DIR/.initialized" ]; then
|
||||||
chown -R node:node "$DATA_DIR"
|
chown -R node:node "$DATA_DIR"
|
||||||
|
|||||||
Reference in New Issue
Block a user