| |
| 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' |
|
|