https://github.com/eea/eea.docker.varnish
Varnish docker image with reload and conf.d support
https://github.com/eea/eea.docker.varnish
Last synced: about 1 year ago
JSON representation
Varnish docker image with reload and conf.d support
- Host: GitHub
- URL: https://github.com/eea/eea.docker.varnish
- Owner: eea
- Created: 2015-07-15T08:57:10.000Z (almost 11 years ago)
- Default Branch: 7.x
- Last Pushed: 2024-12-16T17:29:49.000Z (over 1 year ago)
- Last Synced: 2025-03-30T05:07:26.565Z (about 1 year ago)
- Language: Shell
- Homepage: https://registry.hub.docker.com/u/eeacms/varnish/
- Size: 153 KB
- Stars: 55
- Watchers: 45
- Forks: 43
- Open Issues: 3
-
Metadata Files:
- Readme: Readme.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# 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
- `:7` [*Dockerfile*](https://github.com/eea/eea.docker.varnish/blob/7.x/Dockerfile) (Alpine 3.19, Varnish 7.6.1)
### Stable and immutable tags
- `:4.1-6.5` [*Dockerfile*](https://github.com/eea/eea.docker.varnish/tree/4.1-6.5/varnish/Dockerfile) - Varnish: **4.1.11** Release: **6.5**
- `:7.2-1.0` [*Dockerfile*](https://github.com/eea/eea.docker.varnish/tree/7.2-1.0/Dockerfile) - Varnish: **7.2** Release: **1.0**
- `:7.4-1.1` [*Dockerfile*](https://github.com/eea/eea.docker.varnish/tree/7.4-1.1/Dockerfile) - Varnish: **7.4.2** Release: **1.1**
- `:7.5-1.0` [*Dockerfile*](https://github.com/eea/eea.docker.varnish/tree/7.5-1.0/Dockerfile) - Varnish: **7.5.0** Release: **1.0**
- `:7.6-1.0` [*Dockerfile*](https://github.com/eea/eea.docker.varnish/tree/7.5-1.0/Dockerfile) - Varnish: **7.6.1** Release: **1.0**
See [older versions](https://github.com/eea/eea.docker.varnish/releases)
### Changes
- [CHANGELOG.md](https://github.com/eea/eea.docker.varnish/blob/master/CHANGELOG.md)
## Base docker image
- [hub.docker.com](https://registry.hub.docker.com/u/eeacms/varnish)
## Source code
- [github.com](http://github.com/eea/eea.docker.varnish)
## Installation
1. Install [Docker](https://www.docker.com/).
## 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](https://github.com/eea/eea.docker.varnish/blob/7.x/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 = "";
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 = "", ttl = );
### Example:
You can use [plone-varnish](https://github.com/eea/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)](http://eea.europa.eu)