|
|
|
|
|
FROM node:20-bookworm-slim |
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends git ca-certificates \ |
|
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
|
|
|
ENV PORT=3000 |
|
|
EXPOSE 3000 |
|
|
|
|
|
|
|
|
|
|
|
ENV REPO_URL="" |
|
|
|
|
|
|
|
|
ENV REPO_REF="main" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ENV NODE_ENTRY="server.js" |
|
|
|
|
|
CMD bash -lc '\ |
|
|
set -euo pipefail; \ |
|
|
if [ -z "${REPO_URL}" ]; then echo "ERROR: REPO_URL is empty"; exit 1; fi; \ |
|
|
rm -rf /app/src; \ |
|
|
git clone --depth 1 --branch "${REPO_REF}" "${REPO_URL}" /app/src; \ |
|
|
cd /app/src; \ |
|
|
if [ -f package.json ]; then \ |
|
|
if [ -f package-lock.json ]; then npm ci --omit=dev; else npm install --omit=dev; fi; \ |
|
|
if npm run | grep -qE " start"; then npm run start; else node "${NODE_ENTRY}"; fi; \ |
|
|
else \ |
|
|
node "${NODE_ENTRY}"; \ |
|
|
fi' |
|
|
|