Imagens Docker do Angie#
Para executar o Angie em um contêiner
Docker,
use as imagens do nosso registro: docker.angie.software
.
Elas são construídas baseadas em nossos pacotes binários
e nas imagens base oficiais de vários sistemas operacionais.
Nota
Note também o módulo Docker, que implementa atualização dinâmica de grupos de servidores upstream baseada em rótulos de contêineres Docker.
Imagens Mínimas#
angie:minimal
: versão 1.10.2 baseada no Alpine 3.21.angie:<VERSION>-minimal
: versão especificada baseada no Alpine 3.21.
Essas imagens incluem apenas o pacote angie
.
Imagens com Templates#
angie:templated
: versão 1.10.2 baseada no Alpine 3.21.angie:<VERSION>-templated
: versão especificada baseada no Alpine 3.21.
Essas imagens definem as seguintes variáveis de ambiente:
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"
Essas variáveis podem ser usadas para personalizar o comportamento do contêiner:
ANGIE_BINARY
: Permite executar a versão de debug.ANGIE_ERROR_LOG_SEVERITY
: Define o nível de severidade para entradas no arquivo principal de log de erro.ANGIE_LOAD_MODULES
: Carrega um ou mais módulos disponíveis (todos os módulos estão incluídos na imagem). Especifique uma lista de módulos separados por vírgula sem espaços.ANGIE_PID_FILE
: Define um local alternativo para o arquivo de identificador de processo (PID).ANGIE_FEATURE_TEMPLATE
: Gera configuração do Angie usando a ferramenta gomplate na inicialização do contêiner. Parâmetros usados:--input-dir /etc/angie/templates
e--output-dir /etc/angie
.ANGIE_FEATURE_RELOAD
: Habilita o tratamento dos sinaisSIGHUP
,SIGQUIT
eSIGTERM
.
Exemplos#
A configuração usada em imagens com templates aplica as variáveis aproximadamente da seguinte forma:
...
{{- 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 ...
Executando um contêiner com acesso ao shell:
$ docker run -it --pull always --rm --entrypoint=sh \
docker.angie.software/angie:templated
Execute o Angie com parâmetros de conexão personalizados e módulos (o comando angie -T irá exibir a configuração completa):
$ docker run -it --rm -e ANGIE_WORKER_CONNECTIONS=4 \
-e ANGIE_LOAD_MODULES="auth-jwt,vod" \
docker.angie.software/angie:templated angie -T
Inicie um contêiner com um nome especificado e módulos adicionais:
$ docker run -it --rm --name angie-test \
-e ANGIE_WORKER_CONNECTIONS=4 \
-e ANGIE_LOAD_MODULES="auth-jwt,vod" \
docker.angie.software/angie:templated
Recarregue a configuração de um contêiner em execução:
$ docker kill -s HUP angie-test
Imagens com Módulos Extras#
angie:latest
: versão 1.10.2 baseada no Alpine 3.21.angie:<VERSION>
,angie:<VERSION>-alpine
: versão especificada baseada no Alpine 3.21.angie:<VERSION>-debian
: versão especificada baseada no Debian 12.angie:<VERSION>-rocky
: versão especificada baseada no Rocky Linux 9.angie:<VERSION>-ubuntu
: versão especificada baseada no Ubuntu 24.04 LTS.
Essas incluem os seguintes
pacotes
(se foram lançados para a versão do Angie
com a qual a imagem foi construída):Lista de Pacotes
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
Execução#
Para iniciar um contêiner com Angie na porta 8080,
fornecendo acesso somente leitura ao diretório de arquivos estáticos /var/www/
e ao arquivo de configuração angie.conf
localizado no diretório de trabalho atual:
$ 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
Tais configurações são adequadas para desenvolvimento local e configuração.
Construindo Imagens Personalizadas#
Você também pode construir sua própria imagem
baseada em uma distribuição suportada,
adicionando a camada do Angie a partir de pacotes
ou código-fonte.
Exemplos de arquivos Dockerfile
correspondentes:
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 uma imagem myangie
no diretório com tal Dockerfile
e iniciar um contêiner como mostrado acima:
$ 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