Angie Docker Images#

To run Angie in a Docker container, use the images from our registry: docker.angie.software. They are built based on our binary packages and the official base images of several operating systems.

Minimal Images#

  • angie:minimal: version 1.7.0 based on Alpine 3.20.

  • angie:<VERSION>-minimal: specified version based on Alpine 3.20.

These images include only the angie package.

Images with Extra Modules#

  • angie:latest: version 1.7.0 based on Alpine 3.20.

  • angie:<VERSION>, angie:<VERSION>-alpine: specified version based on Alpine 3.20.

  • angie:<VERSION>-centos: specified version based on CentOS Stream 9.

  • angie:<VERSION>-debian: specified version based on Debian 12.

  • angie:<VERSION>-oracle: specified version based on Oracle Linux 9.

  • angie:<VERSION>-rocky: specified version based on Rocky Linux 9.

  • angie:<VERSION>-ubuntu: specified version based on Ubuntu 24.04 LTS.

These include the following packages (if they were released for the Angie version that the image was built with):

Package List
  • 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-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-xslt

  • angie-module-zip

  • angie-module-zstd

Running#

To start a container with Angie at port 8080, enabling read-only access to the /var/www/ static file directory and the angie.conf file in the current working directory:

$ 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.7.0
    Date: Thu, 19 Sep 2024 10:42:54 GMT
    Content-Type: text/html
    Content-Length: 543
    Last-Modified: Thu, 19 Sep 2024 09:12:23 GMT
    Connection: keep-alive
    ETag: "64c3ccc7-21f"
    Accept-Ranges: bytes

Setups like this can be used for local development and configuration.

Customizing Images#

Also, you can build your own image based on a supported distro, adding the Angie layer with packages or source code. A couple of such Dockerfile examples:

Debian, using Angie packages#
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, using Angie packages#
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;"]

To build a myangie image in the Dockerfile's directory and start a container in the same way as described above:

$ 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