Imágenes Docker de Angie#

Para ejecutar Angie en un contenedor Docker utilice las imágenes de nuestro registro: docker.angie.software. Están creadas a partir de nuestros paquetes binarios y de las imágenes base oficiales de varios sistemas operativos.

Nota

Tenga en cuenta también el módulo Docker, que implementa la actualización dinámica de grupos de servidores upstream basándose en etiquetas de contenedores Docker.

Imágenes mínimas#

  • angie:minimal: versión 1.10.3 basada en Alpine 3.21.

  • angie:<VERSION>-minimal: versión especificada basada en Alpine 3.21.

Estas imágenes incluyen solo el paquete angie.

Imágenes con plantillas#

  • angie:templated: versión 1.10.3 basada en Alpine 3.21.

  • angie:<VERSION>-templated: versión especificada basada en Alpine 3.21.

Estas imágenes establecen las siguientes variables de entorno:

ENV ANGIE_BINARY="angie"
ENV ANGIE_CONFIG_TEMPLATE="/etc/angie/angie.conf.t"
ENV ANGIE_ERROR_LOG_SEVERITY="notice"
ENV ANGIE_FEATURE_RELOAD="on"
ENV ANGIE_FEATURE_TEMPLATE="on"
ENV ANGIE_LOAD_MODULES=""
ENV ANGIE_PID_FILE="/run/angie/angie.pid"
ENV ANGIE_WORKER_CONNECTIONS="65536"
ENV ANGIE_WORKER_RLIMIT_NOFILE="65536"

Estas variables pueden utilizarse para personalizar el funcionamiento del contenedor:

  • ANGIE_BINARY: Permite ejecutar la versión de depuración.

  • ANGIE_ERROR_LOG_SEVERITY: Define el nivel de detalle de las entradas en el archivo principal del registro de errores.

  • ANGIE_LOAD_MODULES: Carga uno o varios módulos disponibles (todos los módulos están incluidos en la imagen). Especifique una lista de módulos separada por comas sin espacios.

  • ANGIE_PID_FILE: Establece una ubicación alternativa para el archivo de identificador del proceso (archivo PID).

  • ANGIE_FEATURE_TEMPLATE: Genera la configuración de Angie usando la herramienta gomplate al iniciar el contenedor. Parámetros usados: --input-dir /etc/angie/templates y --output-dir /etc/angie.

  • ANGIE_FEATURE_RELOAD: Activa la gestión de las señales SIGHUP, SIGQUIT y SIGTERM.

Estas incluyen los siguientes paquetes (si se publicaron para la versión de Angie con la que se construyó la imagen):

Lista de paquetes
  • angie-console-light

  • angie-module-auth-jwt

  • angie-module-auth-ldap

  • angie-module-auth-pam

  • angie-module-auth-spnego

  • angie-module-auth-totp

  • angie-module-brotli

  • angie-module-cache-purge

  • angie-module-cgi

  • angie-module-combined-upstreams

  • angie-module-dav-ext

  • angie-module-dynamic-limit-req

  • angie-module-echo

  • angie-module-enhanced-memcached

  • angie-module-eval

  • angie-module-geoip2

  • angie-module-headers-more

  • angie-module-http-auth-radius

  • angie-module-image-filter

  • angie-module-keyval

  • angie-module-lua

  • angie-module-modsecurity

  • angie-module-ndk

  • angie-module-njs

  • angie-module-opentracing

  • angie-module-otel

  • angie-module-perl

  • angie-module-postgres

  • angie-module-redis2

  • angie-module-rtmp

  • angie-module-set-misc

  • angie-module-subs

  • angie-module-testcookie

  • angie-module-unbrotli

  • angie-module-upload

  • angie-module-vod

  • angie-module-vts

  • angie-module-wasm

  • angie-module-wasmtime

  • angie-module-xslt

  • angie-module-zip

  • angie-module-zstd

Ejemplos#

La configuración usada en las imágenes con plantillas aplica las variables aproximadamente de la siguiente manera:

...
{{- if has $modules "zstd"}}
# paquete: angie-module-zstd
load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_zstd_static_module.so;
{{end}}

user  angie;
worker_processes  auto;
worker_rlimit_nofile {{.Env.ANGIE_WORKER_RLIMIT_NOFILE}};

error_log  /var/log/angie/error.log {{.Env.ANGIE_ERROR_LOG_SEVERITY}};
pid        {{.Env.ANGIE_PID_FILE}};

events {
    worker_connections  {{.Env.ANGIE_WORKER_CONNECTIONS}};
}

http {
    include       /etc/angie/mime.types;
    default_type  application/octet-stream;

    log_format  main  ...

Ejecutar un contenedor con acceso a la línea de comandos:

$ docker run -it --pull always --rm --entrypoint=sh \
  docker.angie.software/angie:templated

Ejecutar Angie con parámetros de conexión y módulos personalizados (el comando angie -T mostrará la configuración completa):

$ docker run -it --rm -e ANGIE_WORKER_CONNECTIONS=4 \
  -e ANGIE_LOAD_MODULES="auth-jwt,vod" \
  docker.angie.software/angie:templated angie -T

Ejecutar un contenedor con un nombre concreto y módulos adicionales:

$ docker run -it --rm --name angie-test \
  -e ANGIE_WORKER_CONNECTIONS=4 \
  -e ANGIE_LOAD_MODULES="auth-jwt,vod" \
  docker.angie.software/angie:templated

Recargar la configuración de un contenedor en ejecución:

$ docker kill -s HUP angie-test

Imágenes con módulos adicionales#

  • angie:latest: versión 1.10.3 basada en Alpine 3.21.

  • angie:<VERSION>, angie:<VERSION>-alpine: versión especificada basada en Alpine 3.21.

  • angie:<VERSION>-debian: versión especificada basada en Debian 12.

  • angie:<VERSION>-rocky: versión especificada basada en Rocky Linux 9.

  • angie:<VERSION>-ubuntu: versión especificada basada en Ubuntu 24.04 LTS.

Estas incluyen los siguientes paquetes (si se publicaron para la versión de Angie con la que se construyó la imagen):

Lista de paquetes
  • angie-console-light

  • angie-module-auth-jwt

  • angie-module-auth-ldap

  • angie-module-auth-pam

  • angie-module-auth-spnego

  • angie-module-auth-totp

  • angie-module-brotli

  • angie-module-cache-purge

  • angie-module-cgi

  • angie-module-combined-upstreams

  • angie-module-dav-ext

  • angie-module-dynamic-limit-req

  • angie-module-echo

  • angie-module-enhanced-memcached

  • angie-module-eval

  • angie-module-geoip2

  • angie-module-headers-more

  • angie-module-http-auth-radius

  • angie-module-image-filter

  • angie-module-keyval

  • angie-module-lua

  • angie-module-modsecurity

  • angie-module-ndk

  • angie-module-njs

  • angie-module-opentracing

  • angie-module-otel

  • angie-module-perl

  • angie-module-postgres

  • angie-module-redis2

  • angie-module-rtmp

  • angie-module-set-misc

  • angie-module-subs

  • angie-module-testcookie

  • angie-module-unbrotli

  • angie-module-upload

  • angie-module-vod

  • angie-module-vts

  • angie-module-wasm

  • angie-module-wasmtime

  • angie-module-xslt

  • angie-module-zip

  • angie-module-zstd

Ejecución#

Para iniciar un contenedor con Angie en el puerto 8080, proporcionando acceso de solo lectura al directorio de archivos estáticos /var/www/ y al archivo de configuración angie.conf ubicado en el directorio de trabajo actual:

$ docker run --rm --name angie -v /var/www:/usr/share/angie/html:ro \
    -v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d docker.angie.software/angie:latest

$ curl -I localhost:8080

    HTTP/1.1 200 OK
    Server: Angie/1.10.3
    Date: Thu, 13 Nov 2025 10:42:54 GMT
    Content-Type: text/html
    Content-Length: 543
    Last-Modified: Thu, 13 Nov 2025 09:12:23 GMT
    Connection: keep-alive
    ETag: "64c3ccc7-21f"
    Accept-Ranges: bytes

Esta configuración es adecuada para desarrollo y ajustes locales.

Construcción de imágenes personalizadas#

También puede definir su propia imagen basada en una distribución compatible, añadiendo la capa de Angie desde paquetes o código fuente. Ejemplos de archivos Dockerfile correspondientes:

Debian, compilación de Angie desde paquetes#
FROM debian:12

LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"

ARG DEBIAN_FRONTEND=noninteractive

RUN set -x \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
          ca-certificates curl \
     && curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
          https://angie.software/keys/angie-signing.gpg \
     && echo "deb https://download.angie.software/angie/$(. /etc/os-release && echo \"$ID/$VERSION_ID $VERSION_CODENAME\") main" \
          > /etc/apt/sources.list.d/angie.list \
     && apt-get update \
     && apt-get install --no-install-recommends --no-install-suggests -y \
          angie angie-module-geoip2 angie-module-njs \
     && rm -Rf /var/lib/apt/lists \
          /etc/apt/sources.list.d/angie.list \
          /etc/apt/trusted.gpg.d/angie-signing.gpg \
     && ln -sf /dev/stdout /var/log/angie/access.log \
     && ln -sf /dev/stderr /var/log/angie/error.log

EXPOSE 80

CMD ["angie", "-g", "daemon off;"]
Alpine, compilación de Angie desde paquetes#
FROM alpine:3.19

LABEL org.opencontainers.image.authors="Release Engineering Team <devops@tech.wbsrv.ru>"

RUN set -x \
     && apk add --no-cache ca-certificates curl \
     && curl -o /etc/apk/keys/angie-signing.rsa https://angie.software/keys/angie-signing.rsa \
     && echo "https://download.angie.software/angie/alpine/v$(egrep -o \
          '[0-9]+\.[0-9]+' /etc/alpine-release)/main" >> /etc/apk/repositories \
     && apk add --no-cache angie angie-module-geoip2 angie-module-njs \
     && rm /etc/apk/keys/angie-signing.rsa \
     && ln -sf /dev/stdout /var/log/angie/access.log \
     && ln -sf /dev/stderr /var/log/angie/error.log

EXPOSE 80

CMD ["angie", "-g", "daemon off;"]

Para construir la imagen myangie en el directorio con este Dockerfile y ejecutar el contenedor como se muestra arriba:

$ docker build -t myangie .
$ docker run --rm --name myangie -v /var/www:/usr/share/angie/html:ro \
    -v $(pwd)/angie.conf:/etc/angie/angie.conf:ro -p 8080:80 -d myangie