Tu primer despliegue
Publica tu propio código desde un directorio de tu equipo, sin repositorio Git. Cada comando de abajo se ejecutó contra un servidor sh0, con su salida real.
Descripción general
sh0 despliega una aplicación desde cuatro orígenes. Esta guía sigue el primero, que sirve para la mayoría de los proyectos:
- Un directorio de tu equipo, enviado por
sh0 pushcomo archivo comprimido -- tu código, con un Dockerfile o una pila detectada (Node.js, Python, Go, Rust, PHP…). - Un archivo ZIP subido desde el panel.
- Un repositorio Git, público o privado, clonado por el servidor.
- Una plantilla del catálogo (bases de datos, CMS, herramientas).
Paso 1: preparar el directorio
Un Dockerfile en la raíz te da control total sobre la imagen. Sin él, sh0 detecta la pila a partir de los archivos del proyecto. La aplicación debe escuchar en un puerto, aquí el 3000:
FROM node:20-alpine
WORKDIR /app
COPY server.js .
EXPOSE 3000
CMD ["node","server.js"]sh0 check puntúa el directorio antes de enviar nada y señala qué corregir. sh0 push hace la misma comprobación y se detiene ante un problema bloqueante (salvo con --no-check); las advertencias no lo detienen:
$ sh0 check .
Scanning /home/you/my-api
Detected: Dockerfile
Health Score: 95/100
Complexity: 2 (Simple)
[~] Warnings (1):
- Missing .dockerignore
Fix: Create a .dockerignore file with: node_modules, .git, dist, .env
1 issue(s): 0 blocking, 1 warnings, 0 auto-fix, 0 infoPaso 2: conectar la CLI
Instala la CLI en tu equipo (ver Instalación de la CLI) y ejecuta sh0 login --url https://panel.example.com con la dirección de tu panel. Pide tu correo y tu contraseña (y tu código 2FA si está activado) y guarda una clave de API en ~/.sh0/config.toml.
Comprueba la conexión:
$ sh0 whoami
Server: https://panel.example.com
User: [email protected]
Role: ownerPaso 3: enviar
Desde el directorio del proyecto:
$ sh0 push -n my-api --port 3000
Deploying my-api
Detected dockerfile -- 95/100 health
2 files (0.0 MB) packaged
Uploading OK 5ms
Routing OK 10.0s
[ok] Live in 10.0s
-> https://my-api-<instance>.sh0.app-nda nombre a la aplicación; sin él, se usa el nombre del directorio. El mismo nombre actualiza después la misma aplicación.--portes el puerto en el que escucha tu aplicación dentro del contenedor.- Un archivo comprimido está limitado a 500 MB. Añade un
.dockerignorepara excluirnode_modules,.gity los artefactos de compilación; ver Desplegar con push para los demás límites.
Paso 4: verificar
La última línea de sh0 push es la dirección de la aplicación. En un servidor conectado al proxy en la nube de sh0 es un subdominio *.sh0.app con HTTPS; para tu propio dominio, ver el paso 6.
$ sh0 status my-api
App: my-api
------------------------------
ID: 85aab295-4166-470a-9538-807b46e8bec3
Status: running
...
Latest Deployment
------------------------------
ID: 551c1602-5a46-49eb-93df-70ee831cfea3
Status: running
Duration: 37.9s
When: 39s ago
$ curl -s https://my-api-<instance>.sh0.app/
{"db":true,"version":2,"greeting":"salut"}Si la aplicación no responde, lee sus registros con sh0 logs my-api --tail 100, o abre la aplicación en el panel y revisa el registro de compilación del despliegue.
Paso 5: actualizar
Cambia tu código y vuelve a ejecutar el mismo sh0 push -n my-api --port 3000: sh0 construye una imagen nueva y sustituye el contenedor en marcha cuando el nuevo está listo. La actualización de arriba tardó 38 segundos, y la aplicación respondió con su nueva versión.
Paso 6: tu propio dominio
Apunta un registro A de tu dominio a la dirección IP del servidor y añádelo a la aplicación, desde la pestaña Dominios de la aplicación o con sh0 domains my-api add api.example.com. sh0 solicita el certificado TLS a Let's Encrypt. Detalles en Dominios personalizados.
Desde el panel
Abre Desplegar en la barra lateral y elige un origen:
- Subir archivo -- un archivo ZIP de tu proyecto.
- URL Git o GitHub -- un repositorio y una rama.
- Plantilla -- una aplicación del catálogo.
Próximos pasos
Tu aplicación está en línea. Siguientes pasos:
Aprende sobre stacks
Comprende cómo organizar múltiples aplicaciones y servicios.
Variables de entorno
Agrega configuración y secretos a tu aplicación.
Dominios y SSL
Configura dominios personalizados y comprende la automatización SSL.
Agregar una base de datos
Crea un servidor PostgreSQL, MySQL, MariaDB o Redis y conecta tu aplicación.