Angie Docker 镜像#
要在 Docker 容器中运行 Angie,
请使用我们注册表中的镜像:docker.angie.software。
这些镜像基于我们的 二进制软件包
和几个操作系统的官方基础镜像构建。
备注
另请注意 Docker 模块, 该模块基于 Docker 容器标签实现上游服务器组的动态更新。
最小化镜像#
angie:minimal: 基于 Alpine 3.21 的 1.10.3 版本。angie:<VERSION>-minimal: 基于 Alpine 3.21 的指定版本。
这些镜像仅包含 angie 软件包。
模板化镜像#
angie:templated: 基于 Alpine 3.21 的 1.10.3 版本。angie:<VERSION>-templated: 基于 Alpine 3.21 的指定版本。
这些镜像设置了以下环境变量:
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"
这些变量可用于自定义容器行为:
ANGIE_BINARY: 允许运行 调试版本。ANGIE_ERROR_LOG_SEVERITY: 设置主 错误日志 文件中条目的严重级别。ANGIE_LOAD_MODULES: 加载一个或多个可用模块(镜像中包含所有模块)。 指定以逗号分隔的模块列表,不含空格。ANGIE_PID_FILE: 设置进程标识符 (PID) 文件的替代位置。ANGIE_FEATURE_TEMPLATE: 在容器启动时使用 gomplate 工具生成 Angie 配置。使用的参数:--input-dir /etc/angie/templates和--output-dir /etc/angie。ANGIE_FEATURE_RELOAD: 启用对SIGHUP、SIGQUIT和SIGTERM信号的处理。
这些镜像包含以下
软件包
(如果它们已针对构建镜像所用的 Angie 版本 发布): 模板化镜像中使用的配置大致按以下方式应用变量: 运行具有 shell 访问权限的容器: 使用自定义连接参数和模块运行 Angie
(命令 angie -T 将输出完整配置): 启动具有指定名称和附加模块的容器: 重新加载正在运行的容器的配置:软件包列表
angie-console-lightangie-module-auth-jwtangie-module-auth-ldapangie-module-auth-pamangie-module-auth-spnegoangie-module-auth-totpangie-module-brotliangie-module-cache-purgeangie-module-cgiangie-module-combined-upstreamsangie-module-dav-extangie-module-dynamic-limit-reqangie-module-echoangie-module-enhanced-memcachedangie-module-evalangie-module-geoip2angie-module-headers-moreangie-module-http-auth-radiusangie-module-image-filterangie-module-keyvalangie-module-luaangie-module-modsecurityangie-module-ndkangie-module-njsangie-module-opentracingangie-module-otelangie-module-perlangie-module-postgresangie-module-redis2angie-module-rtmpangie-module-set-miscangie-module-subsangie-module-testcookieangie-module-unbrotliangie-module-uploadangie-module-vodangie-module-vtsangie-module-wasmangie-module-wasmtimeangie-module-xsltangie-module-zipangie-module-zstd示例#
...
{{- 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 ...
$ docker run -it --pull always --rm --entrypoint=sh \
docker.angie.software/angie:templated
$ docker run -it --rm -e ANGIE_WORKER_CONNECTIONS=4 \
-e ANGIE_LOAD_MODULES="auth-jwt,vod" \
docker.angie.software/angie:templated angie -T
$ docker run -it --rm --name angie-test \
-e ANGIE_WORKER_CONNECTIONS=4 \
-e ANGIE_LOAD_MODULES="auth-jwt,vod" \
docker.angie.software/angie:templated
$ docker kill -s HUP angie-test
包含额外模块的镜像#
angie:latest: 基于 Alpine 3.21 的 1.10.3 版本。angie:<VERSION>,angie:<VERSION>-alpine: 基于 Alpine 3.21 的指定版本。angie:<VERSION>-debian: 基于 Debian 12 的指定版本。angie:<VERSION>-rocky: 基于 Rocky Linux 9 的指定版本。angie:<VERSION>-ubuntu: 基于 Ubuntu 24.04 LTS 的指定版本。
这些镜像包含以下
软件包
(如果它们已针对构建镜像所用的 Angie 版本 发布):软件包列表
angie-console-lightangie-module-auth-jwtangie-module-auth-ldapangie-module-auth-pamangie-module-auth-spnegoangie-module-auth-totpangie-module-brotliangie-module-cache-purgeangie-module-cgiangie-module-combined-upstreamsangie-module-dav-extangie-module-dynamic-limit-reqangie-module-echoangie-module-enhanced-memcachedangie-module-evalangie-module-geoip2angie-module-headers-moreangie-module-http-auth-radiusangie-module-image-filterangie-module-keyvalangie-module-luaangie-module-modsecurityangie-module-ndkangie-module-njsangie-module-opentracingangie-module-otelangie-module-perlangie-module-postgresangie-module-redis2angie-module-rtmpangie-module-set-miscangie-module-subsangie-module-testcookieangie-module-unbrotliangie-module-uploadangie-module-vodangie-module-vtsangie-module-wasmangie-module-wasmtimeangie-module-xsltangie-module-zipangie-module-zstd
运行#
要在端口 8080 上启动带有 Angie 的容器,
提供对静态文件目录 /var/www/ 的只读访问
以及位于当前工作目录中的配置文件 angie.conf:
$ 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
此类配置适用于本地开发和配置。
构建自定义镜像#
您也可以基于支持的发行版构建自己的镜像,
从 软件包
或 源代码 添加 Angie 层。
相应的 Dockerfile 文件示例:
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;"]
要在包含此类 Dockerfile 的目录中构建 myangie 镜像
并按上述方式启动容器:
$ 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