8000 GitHub - eea/eea.docker.varnish: Varnish docker image with reload and conf.d support
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

eea/eea.docker.varnish

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Varnish Docker image

Varnish docker image with support for dynamic backends, Rancher DNS, auto-configure and reload.

This image is generic, thus you can obviously re-use it within your non-related EEA projects.

  • Alpine 3.19
  • Varnish 7.6.1
  • Expose 80, 8443

Supported tags and respective Dockerfile links

Stable and immutable tags

  • :4.1-6.5 Dockerfile - Varnish: 4.1.11 Release: 6.5
  • :7.2-1.0 Dockerfile - Varnish: 7.2 Release: 1.0
  • :7.4-1.1 Dockerfile - Varnish: 7.4.2 Release: 1.1
  • :7.5-1.0 Dockerfile - Varnish: 7.5.0 Release: 1.0
  • :7.6-1.0 Dockerfile - Varnish: 7.6.1 Release: 1.0

See older versions

Changes

Base docker image

Source code

Installation

  1. Install Docker.

Variables

  • VARNISH_HTTP_PORT - varnish port
  • VARNISH_HTTPS_PORT - varnish ssl port
  • VARNISH_SIZE - varnish cache size
  • AUTOKILL_CRON - Varnish re-create crontab, will force a recreation of the container. Uses UTC time, format is linux crontab - for example - 0 2 * * * is 02:00 UTC each day"
  • VARNISH_CFG_CONTENT - Multiline variable that will be written in the default.vcl file

Usage

Using VARNISH_CFG_CONTENT

See docker-compose.yml.

Extend the image with a custom varnish.vcl file

The default.vcl file provided with this image is bare and only contains the marker to specify the VCL version. If you plan on using a more elaborate base configuration in your container and you want it shipped with your image, you can extend the image in a Dockerfile, like this:

FROM eeacms/varnish
COPY varnish.vcl /etc/varnish/default.vcl

and then run

$ docker build -t varnish-custom /path/to/Dockerfile

How to add docker environment variables in varnish.vcl

  1. Choose relevant variable name, starting with VARNISH_ - eg. VARNISH_EXAMPLE

  2. Add default value in Dockerfile

    ENV VARNISH_EXAMPLE="GET"

  3. Add variable in <> in varnish.vcl

    set req.http.X-Varnish-Routed = "<VARNISH_EXAMPLE>";

  4. Add description in Readme.md

Using a read-only volume for the vcl template files - /varnish-config

The volume /varnish-config will be used to store the read only vcl template configuration files. They will be copied with the same structure to /etc/varnish, where the variable substitution will be done.

Rancher integration

Use dynamic.director to integrate varnish in rancher DNS - if a backend containers are changed, it knows to get the latest list of IPs automatically.

  new cluster = dynamic.director(port = "<VARNISH_BACKEND_PORT>", ttl = <VARNISH_DNS_TTL>);

Example:

You can use plone-varnish as an example of usage.

Upgrade

$ docker pull eeacms/varnish

Copyright and license

The Initial Owner of the Original Code is European Environment Agency (EEA). All Rights Reserved.

The Original Code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Funding

European Environment Agency (EU)

About

Varnish docker image with reload and conf.d support

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 10

0