summaryrefslogtreecommitdiff
path: root/Dockerfile
diff options
context:
space:
mode:
authorDaniel Friesel <derf@finalrewind.org>2020-05-03 13:42:31 +0200
committerDaniel Friesel <derf@finalrewind.org>2020-05-03 13:42:31 +0200
commit280ee968915b23008dcf7601074e0d7a5bbd1c30 (patch)
tree34ae8f8e8c1e3b89841e7f930cd34d417a778ee8 /Dockerfile
parent50f7cfbea6265b0be22a132f5711342b2f7d9924 (diff)
Decrease Docker image size
* use intermediate image for file setup * Set version via build-arg instead of from .git
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile68
1 files changed, 56 insertions, 12 deletions
diff --git a/Dockerfile b/Dockerfile
index 608bbbf..b208156 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,29 +1,73 @@
+# docker build -t vrr-fakedisplay:latest --build-arg=vrrf_version=$(git describe --dirty) .
+
+FROM debian:buster-slim AS files
+
+ARG vrrf_version=git
+
+COPY Build.PL cpanfile index.pl /app/
+COPY lib/ /app/lib/
+COPY public/ /app/public/
+COPY share/ /app/share/
+COPY templates/ /app/templates/
+
+WORKDIR /app
+
+RUN ln -sf ../ext-templates/imprint.html.ep templates/imprint.html.ep \
+ && ln -sf ../ext-templates/privacy.html.ep templates/privacy.html.ep
+
+RUN find lib -name '*.pm' -or -name '*.PL' | xargs sed -i \
+ -e "s/VERSION *= *.*;/VERSION = '${vrrf_version}';/"
+
+RUN sed -i -e "s/VERSION *= *.*;/VERSION = '${vrrf_version}';/" \
+ index.pl
+
+
FROM perl:5.30-slim
ARG DEBIAN_FRONTEND=noninteractive
+ARG APT_LISTCHANGES_FRONTEND=none
+
+COPY --from=files /app/ /app/
-COPY . /app
WORKDIR /app
-RUN rm -rf public \
- && apt-get update \
- && apt-get -y --no-install-recommends install ca-certificates curl gcc git libc6-dev libdb5.3 libdb5.3-dev libgd3 libgd-dev libssl1.1 libssl-dev libxml2 libxml2-dev make zlib1g-dev \
+RUN apt-get update \
+ && apt-get -y --no-install-recommends install \
+ ca-certificates \
+ curl \
+ gcc \
+ libc6-dev \
+ libdb5.3 \
+ libdb5.3-dev \
+ libgd3 \
+ libgd-dev \
+ libssl1.1 \
+ libssl-dev \
+ libxml2 \
+ libxml2-dev \
+ make \
+ zlib1g-dev \
&& cpanm -n --no-man-pages --installdeps . \
+ && mv public / \
&& perl Build.PL \
&& perl Build \
&& perl Build manifest \
&& perl Build install \
- && rm -rf ~/.cpanm \
- && apt-get -y purge curl gcc libc6-dev libdb5.3-dev libgd-dev libssl-dev libxml2-dev make zlib1g-dev \
+ && rm -rf ~/.cpanm _build blib MANIFEST* META* MYMETA* \
+ && mv /public . \
+ && apt-get -y purge \
+ curl \
+ gcc \
+ libc6-dev \
+ libdb5.3-dev -\
+ libgd-dev \
+ libssl-dev \
+ libxml2-dev \
+ make \
+ zlib1g-dev \
&& apt-get -y autoremove \
- && apt-get -y clean \
&& rm -rf /var/cache/apt/* /var/lib/apt/lists/*
-RUN ln -sf ../ext-templates/imprint.html.ep templates/imprint.html.ep \
- && ln -sf ../ext-templates/privacy.html.ep templates/privacy.html.ep
-
-COPY public /app/public/
-
EXPOSE 8091
CMD ["hypnotoad", "-f", "index.pl"]