/
Dockerfile
72 lines (65 loc) · 3.29 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
FROM debian:bookworm-slim
ARG PKG_COMMIT=cfa8cb3724e4ca6398f60b09157715bcb99d189d
ARG VARNISH_VERSION=7.5.0
ARG DIST_SHA512=ca77abcb21299942b2bfd433e5f964d2e974cdae92d6a8889217fcd81933a3b7bc1e70ba87d7e842a4f90b59d7948242155380054d67ad49aab8dcea343055a2
ARG VARNISH_MODULES_VERSION=0.24.0
ARG VARNISH_MODULES_SHA512SUM=fd1b1b7ff61654e568df208229eb1af0086c98726592d1269ca5e13b24ce292a4ec6aeea52a5469f465ca426019629ef5db5a54dfed7f1fd2f0a4b50c92503a6
ARG VMOD_DYNAMIC_VERSION=2.8.0-1
ARG VMOD_DYNAMIC_COMMIT=5dc09f52cd8eeed77d879b0313bd8ad9a749477f
ARG VMOD_DYNAMIC_SHA512SUM=0f57c1ca2d85acb4dce86f241a709486fc14dae03af4c6f9a4c59471e4ed2fe776c6a07ed24b898624025b52ed08a051340bc89ce539f25844a0b3650d14c292
ARG TOOLBOX_COMMIT=cfa9ec43a47429ef94f7e04e4abc58c67ad50add
ENV VMOD_DEPS="autoconf-archive automake curl libtool make pkg-config python3-sphinx"
ENV VARNISH_SIZE 100M
RUN set -e; \
BASE_PKGS="curl dpkg-dev debhelper devscripts equivs git pkg-config apt-utils fakeroot libgetdns-dev"; \
export DEBIAN_FRONTEND=noninteractive; \
export DEBCONF_NONINTERACTIVE_SEEN=true; \
mkdir -p /work/varnish /pkgs; \
apt-get update; \
apt-get install -y --no-install-recommends $BASE_PKGS libgetdns10; \
\
# create users and groups with fixed IDs
adduser --uid 1000 --quiet --system --no-create-home --home /nonexistent --group varnish; \
adduser --uid 1001 --quiet --system --no-create-home --home /nonexistent --ingroup varnish vcache; \
adduser --uid 1002 --quiet --system --no-create-home --home /nonexistent --ingroup varnish varnishlog; \
\
# varnish
cd /work/varnish; \
git clone https://github.com/varnishcache/pkg-varnish-cache.git; \
cd pkg-varnish-cache; \
git checkout $PKG_COMMIT; \
rm -rf .git; \
curl -f https://varnish-cache.org/downloads/varnish-$VARNISH_VERSION.tgz -o $tmpdir/orig.tgz; \
echo "$DIST_SHA512 $tmpdir/orig.tgz" | sha512sum -c -; \
tar xavf $tmpdir/orig.tgz --strip 1; \
sed -i -e "s|@VERSION@|$VARNISH_VERSION|" "debian/changelog"; \
mk-build-deps --install --tool="apt-get -o Debug::pkgProblemResolver=yes --yes" debian/control; \
sed -i '' debian/varnish*; \
dpkg-buildpackage -us -uc -j"$(nproc)"; \
apt-get -y --no-install-recommends install ../*.deb; \
mv ../*dev*.deb /pkgs; \
\
git clone https://github.com/varnish/toolbox.git; \
cd toolbox; \
git checkout $TOOLBOX_COMMIT; \
cp install-vmod/install-vmod /usr/local/bin/; \
cp vcls/verbose_builtin/verbose_builtin.vcl vcls/hit-miss/hit-miss.vcl /etc/varnish/; \
\
# varnish-modules
install-vmod https://github.com/varnish/varnish-modules/releases/download/$VARNISH_MODULES_VERSION/varnish-modules-$VARNISH_MODULES_VERSION.tar.gz $VARNISH_MODULES_SHA512SUM; \
\
# vmod-dynamic
install-vmod https://github.com/nigoroll/libvmod-dynamic/archive/$VMOD_DYNAMIC_COMMIT.tar.gz $VMOD_DYNAMIC_SHA512SUM; \
\
# clean up
apt-get -y purge --auto-remove varnish-build-deps $BASE_PKGS; \
rm -rf /var/lib/apt/lists/* /work/ /usr/lib/varnish/vmods/libvmod_*.la; \
chown varnish /var/lib/varnish; \
mkdir -p -m 1777 /var/lib/varnish/varnishd
WORKDIR /etc/varnish
COPY scripts/ /usr/local/bin/
COPY default.vcl /etc/varnish/
ENTRYPOINT ["/usr/local/bin/docker-varnish-entrypoint"]
USER varnish
EXPOSE 80 8443
CMD []