Pulse_Platform / Dockerfile
YoussefSharawy91's picture
Update Dockerfile
5c2d01f verified
FROM node:18-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
git \
ca-certificates \
wget \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
ARG BRANCH=Final_Version
# ✅ Automatic cache-buster tied to branch HEAD
ADD https://api.github.com/repos/YoussefElshaarawy/Pulse_Platform/commits?sha=${BRANCH}&per_page=1 /tmp/branch_head.json
RUN rm -rf /app/*
RUN git clone --depth 1 --branch ${BRANCH} \
https://github.com/YoussefElshaarawy/Pulse_Platform.git . \
&& rm -rf .git
RUN npm ci
RUN npm run build
# ✅ Create a tiny patch script (no escaping problems)
RUN cat > /tmp/patch-dist.js <<'JS'
const fs = require("fs");
const id = String(Date.now());
const stamp = `BUILD_ID=${id}\nUTC=${new Date().toISOString()}\n`;
if (!fs.existsSync("dist")) {
console.error("Missing dist/ directory");
process.exit(1);
}
fs.writeFileSync("dist/__build.txt", stamp, "utf8");
const indexPath = "dist/index.html";
if (!fs.existsSync(indexPath)) {
console.error("Missing dist/index.html");
process.exit(1);
}
let h = fs.readFileSync(indexPath, "utf8");
// Replace both variants safely
h = h.replaceAll('src="./Pulse.html"', `src="/Pulse.html?v=${id}"`);
h = h.replaceAll('src="/Pulse.html"', `src="/Pulse.html?v=${id}"`);
// Add a visible comment stamp at top
h = `<!-- ${stamp.trim().replace(/\n/g, " ")} -->\n` + h;
fs.writeFileSync(indexPath, h, "utf8");
console.log("Patched index.html iframe to:", `/Pulse.html?v=${id}`);
JS
# ✅ Run the patch script
RUN node /tmp/patch-dist.js
RUN npm install -g serve
# ✅ Debug
RUN echo "=== build stamp ===" && cat dist/__build.txt
RUN echo "=== iframe line ===" && grep -n "Pulse.html" dist/index.html || true
RUN echo "=== HTML files in dist ===" && find dist -maxdepth 2 -type f -iname "*.html" -print
ENV PORT=7860
EXPOSE 7860
CMD ["sh", "-c", "serve dist -l tcp://0.0.0.0:${PORT:-7860}"]