ImplementarPersonalizar imagen Docker

Imagen Docker personalizada

Aunque Zeabur ya incluye numerosas plantillas proporcionadas por la comunidad, es posible que necesites desplegar tus propias imágenes Docker, configurar almacenamiento persistente, establecer el comando de inicio y más. Para esta necesidad, Zeabur ofrece la funcionalidad personalizable Prebuilt.

Abrir Interfaz

Haz clic en “Añadir servicio” → “Imágenes Docker” para abrir esta página.

Abrir página de personalización de Docker

Instrucciones de configuración

Imagen

Instrucciones de configuración de imagen

“Imagen” es la imagen Docker que se extraerá, típicamente la etiqueta de la imagen que sigue a docker pull o docker run, como por ejemplo

docker pull mariadb      # la etiqueta es "mariadb"
docker run mariadb:lts   # la etiqueta es "mariadb:lts"

O en Docker Compose

version: '3.9'
services:
  db:
    image: postgres      # la etiqueta es "postgres"
    # ...

Tras configurarla, puedes proceder a configurar variables de entorno, puertos, etc.

Variable de entorno

Ejemplo de configuración de variable de entorno

“Variable de entorno”, como su nombre indica, es la variable de entorno que se pasa al servicio. Además de la configuración básica de variables de entorno, Zeabur también te permite exponer estas variables a otros servicios.

“Clave” es la clave de la variable de entorno, que solo permite letras, números y guiones bajos, como MARIADB_USER o DB_1_HOST.

“Valor” es el valor de la variable de entorno, que puede incluir referencias ${CLAVE} a otras variables. Como se muestra arriba, MARIADB_PASSWORD hace referencia a MARIADB_ROOT_PASSWORD, por lo que su valor es igual a 123456. De manera similar, si el valor de una variable es password=${MARIADB_PASSWORD}, se expande a password=123456. Este formato ${CLAVE} se expande al inicio del servicio, por lo que la aplicación ve el valor expandido.

“Exponer” hace que la variable esté disponible para otros servicios. Por ejemplo, MARIADB_USERNAME y MARIADB_PASSWORD están expuestas, lo que las hace accesibles para otros servicios en el mismo proyecto.

Además de las variables expuestas por otros servicios, también puedes usar variables especiales predefinidas de Zeabur, como usar ${ZEABUR_WEB_URL} para obtener la URL establecida en el puerto web.

Si estás escribiendo un Prebuilt según la documentación de una imagen Docker, las variables de entorno a menudo siguen a docker run con --env (o -e), como por ejemplo:

docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_DATABASE=example-database --env MARIADB_ROOT_PASSWORD=my-secret-pw  mariadb:latest
 
# MARIADB_USER          = example-user
# MARIADB_PASSWORD      = my_cool_secret
# MARIADB_DATABASE      = example-database
# MARIADB_ROOT_PASSWORD = my-secret-pw

En Docker Compose:

version: '3.9'
services:
  adminer:
    image: adminer
    restart: always
    environment:
      DEBUG: "true"   # (o) - DEBUG=true
      # DEBUG = true

Puertos

Ejemplo de configuración de puertos

Los “Puertos” funcionan como reglas de entrada de cortafuegos, permitiendo que solo los puertos declarados sean accedidos por otros servicios o la red externa.

“Nombre del puerto” solo debe consistir en letras y guiones. “Puerto” es el puerto de escucha del servicio, como 3306 para MariaDB o 8080, 3000, 80 para servicios web.

El “Tipo de puerto” puede ser HTTP o TCP. Para acceso externo, se puede acceder a los puertos HTTP con un dominio (ej. my-service.zeabur.app) que incluye la firma automática de certificados TLS por Zeabur, mientras que se puede acceder a los puertos TCP con un nombre de host y puerto asignados automáticamente (ej. reg.clusters.zeabur.com:12345). Para conexiones entre servicios, puedes acceder al puerto con Red privada, lo que reduce costos de tráfico innecesarios. Para acceder a este puerto en otros servicios, usa el puerto declarado directamente (mariadb.zeabur.internal:3306, backend.zeabur.internal:8080).

Si estás escribiendo un Prebuilt según la documentación de una imagen Docker, los puertos siguen a docker run con -p, como por ejemplo:

docker run -p 3306 mariadb:latest
 
# Nombre del puerto = <Personalizado>; Puerto = 3306; Tipo de puerto = TCP
# TCP porque MariaDB usa un protocolo personalizado basado en TCP.

En Docker Compose:

version: '3.9'
services:
  adminer:
    image: adminer
    restart: always
    ports:
      - 80:8080
      # Nombre del puerto = <Personalizado>; Puerto = 8080; Tipo de puerto = HTTP
      # HTTP porque adminer es una interfaz web PHP para gestión de bases de datos.

Volúmenes

Ejemplo de configuración de volúmenes

Los “Volúmenes” son rutas para almacenamiento persistente.

Por defecto, Zeabur restablece los datos del servicio al estado predeterminado de la imagen en cada reinicio (sin estado). Para almacenar datos a largo plazo en un contenedor, puedes configurar almacenamiento persistente y montarlo en el directorio deseado. Esto asegura que el directorio montado permanezca inalterado en reinicios o actualizaciones, hasta que elimines el servicio o modifiques el contenido del directorio. La función de “Copia de seguridad” también respalda este espacio. Consulta los Precios de Zeabur para los cargos de almacenamiento persistente.

“ID del volumen” es el identificador del espacio de almacenamiento, que solo consiste en letras, números y guiones. “Ruta” es la ruta de montaje, configurada según los ajustes de Volume de la imagen Docker.

En la documentación de la imagen Docker, los volúmenes siguen a docker run con -v, como por ejemplo:

docker run -v your-storage:/var/lib/mysql mariadb:latest
 
# ID del volumen = <Personalizado>; Ruta = /var/lib/mysql

En Docker Compose:

version: '3.9'
services:
  mariadb:
    image: mariadb
    volumes:
      - your-storage:/var/lib/mysql
      # ID del volumen = <Personalizado>; Ruta = /var/lib/mysql

Comando de inicio

Ejemplo de configuración de comando de inicio

“Comando de inicio” te permite anular el punto de entrada y los argumentos predeterminados de la imagen Docker. Esta es una configuración avanzada y puede omitirse si no estás seguro de qué es.

Al especificar desde la GUI, el punto de entrada predeterminado al configurar este campo es /bin/sh. Si tu imagen no proporciona /bin/sh, usa Editar TOML para cambiarlo o consulta soporte para ayuda.

Escribe manualmente tu plantilla

Aunque la GUI ofrece muchos parámetros necesarios para crear tus servicios Docker, es posible que desees añadir iconos personalizados, instrucciones de conexión o configuraciones detalladas. En este caso, escribir tu plantilla en código es una mejor opción.

Si tienes alguna pregunta sobre cómo escribir tu propia plantilla, no dudes en contactar con soporte.