Aprendido desplegando cotizador (Next.js+FastAPI+Postgres, Docker Compose, repo privado) en coolify.urieljareth.org (v4.1.2): - Documenta que /applications/* devuelve 404 en esta instancia y que configurar apps git build-from-source solo es posible por la UI web. - Nuevos scripts scripts/coolify-ui/: coolify-login.mjs (guarda storageState) y Configure-CoolifyComposeApp.mjs (build pack -> Docker Compose, Reload Compose File, env vars por Developer view, dominios por servicio). - references/coolify-4.1.2-notes.md: mapa de API funcional/404, gotchas (BOM UTF-8 rompe el parser YAML de Coolify; Reload Compose File obligatorio; pin de dominios por servicio o 503; no encolar deploys concurrentes; PowerShell [IO.File]::ReadAllText para payloads de llaves). - env.local.template.ps1: COOLIFY_EMAIL/COOLIFY_PASSWORD para la UI. - SKILL.md/TOOLS.md: seccion "instance reality" y flujo UI paso a paso. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
27 lines
874 B
Docker
27 lines
874 B
Docker
# Minimal compliant Dockerfile for a Node app deployed to this Coolify instance.
|
|
#
|
|
# Hard rules followed (see docs/AGENTS-coolify-apps.md):
|
|
# - No published host ports 80/443 (Traefik routes them).
|
|
# - Real listening port is set via ports_exposes in Coolify (here 8080).
|
|
# - Healthcheck endpoint must NOT depend on the DB being reachable at boot.
|
|
#
|
|
# Replace the build/run commands with the ones that match your framework.
|
|
|
|
FROM node:20-alpine AS build
|
|
WORKDIR /app
|
|
COPY package*.json ./
|
|
RUN npm ci
|
|
COPY . .
|
|
RUN npm run build
|
|
|
|
FROM node:20-alpine AS run
|
|
WORKDIR /app
|
|
ENV NODE_ENV=production
|
|
ENV PORT=8080
|
|
COPY --from=build /app /app
|
|
# Cheap endpoint; implement /health in your app to return 200 without DB.
|
|
HEALTHCHECK --interval=30s --timeout=5s --retries=3 --start-period=20s \
|
|
CMD wget -qO- http://localhost:8080/health || exit 1
|
|
EXPOSE 8080
|
|
CMD ["npm", "start"]
|