Implementación con Dockerfile
Normalmente, no necesitas escribir un Dockerfile por tu cuenta. Zeabur actualmente ofrece métodos de implementación rápida para varios frameworks populares, pero si tu proyecto no utiliza estos frameworks o deseas definir tu propio método de implementación, puedes usar un Dockerfile para implementarlo.
Creando un Dockerfile
Crea un archivo llamado Dockerfile o dockerfile en el directorio raíz de tu proyecto y escribe en él tu método de implementación. Finalmente, asegúrate de haber expuesto el PORT correspondiente.
Zeabur detectará automáticamente si tu proyecto tiene un Dockerfile. Si es así, implementará tu proyecto utilizando Docker.
Una vez que comience la implementación, podrás ver el icono de Docker arriba, lo que significa que tu proyecto ha sido implementado utilizando Docker.

Implementación sin usar Dockerfile
Si tu proyecto tiene un Dockerfile pero no deseas usar este Dockerfile en Zeabur (por ejemplo, dejar que Zeabur decida el mejor método de implementación para este proyecto), puedes configurar ZBPACK_IGNORE_DOCKERFILE=true en las variables de entorno, o agregar lo siguiente a zbpack.json:
{
"ignore_dockerfile": true
}Zeabur entonces ignorará tu Dockerfile y determinará automáticamente el método de implementación.
Variables de entorno
Si tu Dockerfile necesita usar variables de entorno, puedes hacer clic en Variables de entorno en la página del servicio para agregarlas. Para más configuraciones, consulta Variables de entorno.

Si tu Dockerfile está escrito en una sola etapa, o si tus variables de entorno solo necesitan usarse en la etapa final, no necesitas escribir ENV manualmente. Zeabur lo agregará automáticamente por ti.
ARG
Sin embargo, si tu Dockerfile está escrito en varias etapas (multi-stage) y necesitas establecer variables de entorno antes de la construcción, puedes usar ARG para configurarlas.
Aquí tomamos Node.js y Nginx como ejemplo para escribir un Dockerfile para la implementación.
FROM node:18-alpine AS builder
WORKDIR /app
COPY . .
## El `BUILDTIME_ENV_EXAMPLE` aquí será configurado automáticamente antes de la construcción
ARG BUILDTIME_ENV_EXAMPLE
ENV BUILDTIME_ENV_EXAMPLE=${BUILDTIME_ENV_EXAMPLE}
RUN npm install && \
npm run build
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/configfile.template
COPY --from=builder /app/dist /usr/share/nginx/html
ENV \
PORT=8080 \
HOST=0.0.0.0
EXPOSE 8080
CMD sh -c "envsubst '\$PORT' < /etc/nginx/conf.d/configfile.template > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"Especificar Dockerfile para implementar (Monorepo / Múltiples servicios desde un mismo repositorio)
Cuando tu repositorio contiene varios Dockerfiles (por ejemplo, un monorepo que despliega varios servicios), Zeabur ofrece tres maneras de indicarle a cada servicio qué Dockerfile utilizar.
Opción 1: Coincidencia automática por nombre de servicio (recomendada)
La forma más sencilla: nombra tu Dockerfile como [service-name].Dockerfile o Dockerfile.[service-name]. Zeabur seleccionará automáticamente el archivo correspondiente según el nombre del servicio que hayas configurado en el dashboard. Por ejemplo, si tu servicio se llama storage, Zeabur usará Dockerfile.storage (o storage.Dockerfile).

Opción 2: ZBPACK_DOCKERFILE_NAME para especificar el sufijo
Si tu Dockerfile se llama <suffix>.Dockerfile o Dockerfile.<suffix> pero no quieres que el nombre del servicio dicte la coincidencia, establece el sufijo explícitamente:
ZBPACK_DOCKERFILE_NAME=storageO en zbpack.json:
{
"dockerfile": {
"name": "storage"
}
}Zeabur buscará Dockerfile.storage o storage.Dockerfile.
Esta variable acepta únicamente el sufijo, no un nombre de archivo completo. Si estableces ZBPACK_DOCKERFILE_NAME=Dockerfile.storage, Zeabur buscará un archivo llamado Dockerfile.Dockerfile.storage, que no existirá — y caerá silenciosamente en la detección automática, lo que probablemente construirá tu proyecto con el builder equivocado (p. ej. Node.js). Si quieres pasar un nombre de archivo o ruta completa, usa ZBPACK_DOCKERFILE_PATH en su lugar.
Opción 3: ZBPACK_DOCKERFILE_PATH para rutas arbitrarias
Si tu Dockerfile no está en la raíz de la build, o su nombre no sigue la convención *.Dockerfile / Dockerfile.*, usa esta variable para especificar la ruta del Dockerfile. La ruta es relativa a la raíz de build del servicio — es decir, al Root Directory configurado en el servicio, o a la raíz del repositorio si no se ha configurado ninguno:
ZBPACK_DOCKERFILE_PATH=apps/admin/DockerfileO en zbpack.json:
{
"dockerfile": {
"path": "apps/admin/Dockerfile"
}
}Zeabur usará ese archivo exacto para construir, sin aplicar coincidencia por sufijo. Esta es la opción correcta para Dockerfiles ubicados en subdirectorios o con nombres totalmente personalizados.
Docker Compose
Actualmente, Zeabur no admite la implementación desde un archivo YAML de Docker Compose.
Puedes convertir tu archivo Docker Compose en un archivo YAML de plantilla de Zeabur. Para más detalles, consulta Creando plantillas desde YAML. Si necesitas ayuda, no dudes en contactarnos en comunidad.