Dockerfile
Pega un Dockerfile (o apunta a Git repo) — Pier construye y envía.
Trae tu propio Dockerfile y Pier construye la imagen, corre el contenedor y lo cablea. Pega el Dockerfile inline o apunta a un Git repo conteniendo uno. Útil cuando necesitas control de build completo — paquetes de sistema exóticos, builds multi-stage, entrypoints custom — que auto-builders (Railpack) no pueden expresar.
Desplegar con Pier
- 1 Abre el panel de Pier y haz clic en Add service.
- 2 Elige Dockerfile en la lista de plantillas.
- 3 Elige la versión, asigna un nombre al servicio y Pier provisionará automáticamente el contenedor, el almacenamiento y los puertos.
- 4 Vincula un dominio si quieres HTTPS. Traefik genera el certificado de Let's Encrypt automáticamente.
¿Qué es la plantilla Dockerfile?
Trae tu propio Dockerfile. O pégalo directamente en la UI Pier (bueno para contenedores inline diminutos) o apunta a un repositorio Git conteniendo uno (bueno para todo lo que vas a iterar). Pier construye la imagen con BuildKit, corre el contenedor, lo adjunta a su red Traefik-fronted para HTTPS, y gestiona env / volúmenes / logs / ciclo de vida.
Usa esta plantilla cuando necesitas control explícito sobre el build — builds multi-stage, base images distroless, paquetes de sistema, entrypoints custom, build-time secrets — que auto-builders como Railpack no exponen. Dockerfiles hand-tuned consistentemente ganan a auto-builders en tamaño de imagen, control de capa y superficie de revisión de seguridad para la app específica que apuntan.
Cómo lo despliega Pier
Proveés contenido Dockerfile (textarea) o Git URL. Pier clona (si modo Git)
y corre docker buildx build con BuildKit en el host, produciendo una
imagen OCI stored localmente. El contenedor inicia con tus puertos, env
vars y volúmenes configurados.
Caché de capas BuildKit persiste entre builds — builds incrementales típicos terminan en segundos. Build secrets (npm tokens, auth de registry privado) van junto vía el mecanismo de secret mount de BuildKit sin hornearse en la imagen final.
Adjunta un dominio custom en Pier para HTTPS vía Traefik. Click Redeploy para triggear un rebuild (o cablea un Git webhook para push-to-deploy).
Cuándo NO usar Dockerfile
Para “tengo source, sin Dockerfile, quiero contenedor” — usa Railpack. Para “tengo imagen pre-built en un registry” — usa Docker Image. Para “tengo stack multi-contenedor” — usa Docker Compose. Para servicios Pier nativos con backups gestionados y version upgrades (PostgreSQL, Gitea, Grafana, …), elige la plantilla dedicada. Dockerfile es la respuesta correcta cuando necesitas control completo sobre cómo se construye tu app single-container.
Características clave
Pega-inline o Git URL
Dos modos de input — pega un Dockerfile directo en la UI, o dale a Pier un Git repo URL y construye desde el Dockerfile en el root del repo (o path especificado).
Control de build completo
Builds multi-stage, ARG / ENV / COPY / RUN — cualquier cosa que Docker pueda hacer, esta plantilla construye.
BuildKit-powered
Caché de capas entre rebuilds, etapas paralelas, build secrets. Iteración más rápida que classic Docker build.
Build args + env vars
Pasa ARGs build-time y ENV runtime separadamente. Build secrets quedan fuera de la imagen final.
HTTPS vía Traefik
Adjunta un dominio en Pier; el contenedor corriendo se fronts con Let's Encrypt TLS automáticamente.
Redeploy por webhook
Cuando apuntado a un Git repo, configura un webhook para que cada push triggee rebuild y redeploy.
Casos de uso
Cuando Railpack no es suficiente
Necesitas un paquete de sistema, base image custom, build multi-stage o truco que Railpack no auto-detecta. Escribe el Dockerfile.
Apps legacy con Dockerfiles hand-tuned
Tu Dockerfile existente refleja años de tuning de build — manténlo, envíalo por Pier.
Control estricto de imagen
Quieres una base image específica (distroless, scratch, Alpine), usuario específico, orden de capa específico — Dockerfile es la única vía.
Builds con secrets
BuildKit secrets mantienen credenciales fuera de la imagen final. La plantilla Dockerfile los soporta; Railpack e Image no.
Contenedores utility single-file
Scripts diminutos, init containers, sidecars — pega un Dockerfile de 10 líneas inline, deploy.
Ejemplos de código
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
EXPOSE 3000
CMD ["node", "server.js"] FROM golang:1.23 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /app/server ./cmd/server
FROM gcr.io/distroless/static-debian12
COPY --from=builder /app/server /server
EXPOSE 8080
USER nonroot:nonroot
ENTRYPOINT ["/server"] FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg libsndfile1 \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] # syntax=docker/dockerfile:1
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN --mount=type=secret,id=npm_token \
export NPM_TOKEN=$(cat /run/secrets/npm_token) && \
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ~/.npmrc && \
npm ci --omit=dev && \
rm ~/.npmrc
COPY . .
CMD ["node", "server.js"] Comparativa
| vs Railpack (este catálogo) | Railpack auto-detecta y escribe un build plan por ti. Dockerfile es cuando necesitas control explícito o la detección Railpack no es correcta. Muchos equipos empiezan con Railpack y mueven a Dockerfile servicios específicos que lo necesitan. |
| vs Docker Image (este catálogo) | Docker Image corre una imagen prebuilt. Dockerfile construye una imagen desde source. Usa Image cuando CI construye por ti; Dockerfile cuando quieres que Pier construya. |
| vs Docker Compose (este catálogo) | Compose orquesta múltiples contenedores. Dockerfile construye y corre UN. Usa Compose para stacks multi-servicio (también puede construir desde Dockerfiles per service). |
| vs Buildpacks (CNB) | CNB es el spec detrás de builders style Heroku/Paketo. Railpack es la alternativa moderna más simple en Pier. Dockerfile es el escape hatch de nivel más bajo. |
Preguntas frecuentes
¿Construir desde Git repo URL o pegar inline — cuál?
¿Qué tan grande puede ser mi context?
¿Caché BuildKit?
¿Builds multi-arch?
¿Base images privadas?
¿Cómo funcionan los build secrets?
¿Redeploys webhook?
Servicios relacionados
Desplegar en tu VPS
Trae tu propio Dockerfile y Pier construye la imagen, corre el contenedor y lo cablea. Pega el Dockerfile inline o apunta a un Git repo conteniendo uno. Útil cuando necesitas control de build completo — paquetes de sistema exóticos, builds multi-stage, entrypoints custom — que auto-builders (Railpack) no pueden expresar.
Desplegar este servicio →