Angie Docker Images#
Para ejecutar Angie en un contenedor Docker, utilice las imágenes de nuestro registro: docker.angie.software
. Estas imágenes están construidas a partir de nuestros paquetes binarios y de las imágenes base oficiales de varios sistemas operativos.
Nota
También tenga en cuenta 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.2 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.2 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 comportamiento del contenedor:
ANGIE_BINARY
: Permite ejecutar la versión de depuración Registro de depuración.ANGIE_ERROR_LOG_SEVERITY
: Establece el nivel de severidad de las entradas en el archivo principal de registro de errores Registro.ANGIE_LOAD_MODULES
: Carga uno o más 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 de proceso (PID).ANGIE_FEATURE_TEMPLATE
: Genera la configuración de Angie utilizando la herramienta gomplate <https://docs.gomplate.ca/>_ al iniciar el contenedor. Parámetros utilizados:--input-dir /etc/angie/templates
y--output-dir /etc/angie
.ANGIE_FEATURE_RELOAD
: Habilita el manejo de las señales SIGHUP, SIGQUIT y SIGTERM.
Ejemplos#
La configuración utilizada en las imágenes con plantillas aplica las variables aproximadamente de la siguiente manera:
...
{{- if has $modules "zstd"}}
# package: 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 shell:
$ docker run -it --pull always --rm --entrypoint=sh \
docker.angie.software/angie:templated
Ejecutar Angie con parámetros de conexión personalizados y módulos (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
Iniciar un contenedor con un nombre específico 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.2 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
packages
(si fueron lanzados 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-spnego
angie-module-brotli
angie-module-cache-purge
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-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.2
Date: Thu, 21 Aug 2025 10:42:54 GMT
Content-Type: text/html
Content-Length: 543
Last-Modified: Thu, 21 Aug 2025 09:12:23 GMT
Connection: keep-alive
ETag: "64c3ccc7-21f"
Accept-Ranges: bytes
Estas configuraciones son adecuadas para el desarrollo local y la configuración.
Construcción de Imágenes Personalizadas#
También puede construir 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:
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;"]
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 una imagen myangie en el directorio que contiene un Dockerfile como éste y arrancar un contenedor tal 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