Compilaciones
Zeabur utiliza zbpack como herramienta interna para compilar los servicios de los usuarios, de modo que puedan desplegar servicios basados en cualquier lenguaje y framework con un clic sin necesidad de comprender los detalles complejos.
Actualmente, zbpack soporta todos los lenguajes de programación principales para desarrollo web, y ha identificado y optimizado aún más para cada framework de desarrollo popular. Al mismo tiempo, se actualiza constantemente para nuevos lenguajes de programación y frameworks:
- Node.js
- Python
- PHP
- Ruby
- Go
- Java
- .NET
- Rust
- Elixir
Si el lenguaje o framework utilizado por tu servicio no está en la lista anterior, o si encuentras que zbpack tiene un problema durante el proceso de compilación, por favor contribuye un Pull Request a GitHub para ayudarnos a mejorar la funcionalidad de zbpack.
Cuando usas zbpack para compilar un servicio en un proyecto, identifica automáticamente el lenguaje y framework utilizados por el servicio basándose en el código, archivos de configuración y otra información del proyecto, y según esta información, elige la forma apropiada de compilar el servicio.
Generar Plan de Compilación
Por ejemplo, supongamos que has desarrollado una aplicación web basada en Next.js:
git clone https://github.com/zeabur/nextjs-template
cd nextjs-templateCuando ejecutas el comando zbpack en la carpeta de este proyecto, puedes ver el plan de compilación personalizado:
zbpack .
╔══════════════════════════════ Build Plan ═════════════════════════════╗
║ provider │ nodejs ║
║───────────────────────────────────────────────────────────────────────║
║ nodeVersion │ 18 ║
║───────────────────────────────────────────────────────────────────────║
║ installCmd │ pnpm install ║
║───────────────────────────────────────────────────────────────────────║
║ buildCmd │ pnpm run build ║
║───────────────────────────────────────────────────────────────────────║
║ startCmd │ pnpm start ║
║───────────────────────────────────────────────────────────────────────║
║ packageManager │ pnpm ║
║───────────────────────────────────────────────────────────────────────║
║ framework │ next.js ║
╚═══════════════════════════════════════════════════════════════════════╝En la figura, podemos ver que zbpack elige usar el Provider nodejs como proveedor de solución para la compilación, lo que significa que hará lo siguiente en el plan posterior:
- Encontrar qué versión de Node.js usa el servicio
- Encontrar qué gestor de paquetes usa el servicio (
npm,yarnopnpm) - Encontrar qué comando usa el servicio para instalar dependencias
- Encontrar qué comando usa el servicio para compilar
- Encontrar qué comando usa el servicio para iniciar
- Encontrar qué framework de Node.js usa el servicio
Compilar Servicio
A continuación, zbpack generará un Dockerfile basado en este plan de compilación, y luego usará automáticamente este Dockerfile para compilar el servicio:
[+] Building 41.3s (12/12) FINISHED docker:orbstack
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 252B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/node:18 5.8s
=> [auth] library/node:pull token for registry-1.docker.io 0.0s
=> [1/6] FROM docker.io/library/node:18@sha256:a6385a6bb2fdcb7c48fc871e35e32af8daaa82c518900be49b76d10c005864c2 6.9s
=> [internal] load build context 5.0s
=> => transferring context: 171.44MB 5.0s
=> [2/6] WORKDIR /src 0.8s
=> [3/6] RUN corepack enable && corepack prepare --all 7.5s
=> [4/6] COPY . . 2.4s
=> [5/6] RUN pnpm install 7.0s
=> [6/6] RUN pnpm run build 8.6s
=> exporting to image 2.3s
=> => exporting layers 2.3s
=> => writing image sha256:d95f934faaefd82b38167ff158e8a31973edcd6a9ba7cc361999080345e80e38 0.0s
=> => naming to docker.io/library/nextjs-template 0.0s
Build successful
To run the image, use the following command:
docker run -p 8080:8080 -it nextjs-templateLuego, podemos usar docker run -p 8080:8080 -it nextjs-template para iniciar el servicio, y abrir http://localhost:8080 en el navegador para acceder al servicio.