Use HOMEPAGE_BUILDTIME to revalidate container restart/recreate

pull/1187/head
shamoon 1 year ago
parent a42c50f1cc
commit 6701e3bd77

@ -29,7 +29,7 @@ COPY . .
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"] SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
RUN npm run telemetry \ RUN npm run telemetry \
&& mkdir config && echo '---' > config/settings.yaml \ && mkdir config \
&& NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION npm run build && NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION npm run build
# Production image, copy all the files and run next # Production image, copy all the files and run next

@ -10,6 +10,8 @@ export PGID=${PGID:-0}
# while also supporting the lscr.io /config directory # while also supporting the lscr.io /config directory
[ ! -d "/app/config" ] && ln -s /config /app/config [ ! -d "/app/config" ] && ln -s /config /app/config
export HOMEPAGE_BUILDTIME=$(date +%s)
# Set privileges for /app but only if pid 1 user is root and we are dropping privileges. # Set privileges for /app but only if pid 1 user is root and we are dropping privileges.
# If container is run as an unprivileged user, it means owner already handled ownership setup on their own. # If container is run as an unprivileged user, it means owner already handled ownership setup on their own.
# Running chown in that case (as non-root) will cause error # Running chown in that case (as non-root) will cause error

@ -19,8 +19,8 @@ export default async function handler(req, res) {
return hash(readFileSync(configYaml, "utf8")); return hash(readFileSync(configYaml, "utf8"));
}); });
// this ties hash to specific build which should force revaliation between versions // set to date by docker entrypoint, will force revalidation between restarts/recreates
const buildTime = process.env.NEXT_PUBLIC_BUILDTIME?.length ? process.env.NEXT_PUBLIC_BUILDTIME : ''; const buildTime = process.env.HOMEPAGE_BUILDTIME?.length ? process.env.HOMEPAGE_BUILDTIME : '';
const combinedHash = hash(hashes.join("") + buildTime); const combinedHash = hash(hashes.join("") + buildTime);

@ -1,6 +1,6 @@
/* eslint-disable no-console */ /* eslint-disable no-console */
import { join } from "path"; import { join } from "path";
import { existsSync, copyFile, readFileSync } from "fs"; import { existsSync, readFileSync, copyFileSync } from "fs";
import cache from "memory-cache"; import cache from "memory-cache";
import yaml from "js-yaml"; import yaml from "js-yaml";
@ -13,13 +13,13 @@ export default function checkAndCopyConfig(config) {
const configYaml = join(process.cwd(), "config", config); const configYaml = join(process.cwd(), "config", config);
if (!existsSync(configYaml)) { if (!existsSync(configYaml)) {
const configSkeleton = join(process.cwd(), "src", "skeleton", config); const configSkeleton = join(process.cwd(), "src", "skeleton", config);
copyFile(configSkeleton, configYaml, (err) => { try {
if (err) { copyFileSync(configSkeleton, configYaml)
console.info("%s was copied to the config folder", config);
} catch (err) {
console.error("error copying config", err); console.error("error copying config", err);
throw err; throw err;
} }
console.info("%s was copied to the config folder", config);
});
return true; return true;
} }

Loading…
Cancel
Save