Create a publishable Dockerfile
Change-Id: I35ac2101dd830bf433d4bcd72caabfdb77aa395d
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..8f0b444
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,73 @@
+# Build assets in builder image
+FROM node:12 as assetbuilder
+
+# This follows the "multi-stage build" pattern
+
+RUN npm install -g sass && \
+ npm install grunt && \
+ npm install -g grunt-cli
+
+# Copy repository respecting .dockerignore
+COPY . /kalamar
+
+RUN cd /kalamar && \
+ npm install && \
+ grunt && \
+ rm -rf node_modules \
+ dev/css \
+ dev/demo \
+ dev/font \
+ dev/img \
+ dev/scss
+
+# Use alpine linux as base image
+FROM alpine:latest
+
+# Copy assets from former container
+COPY --from=assetbuilder /kalamar /kalamar
+
+WORKDIR /kalamar
+
+RUN apk update && \
+ apk add --no-cache git \
+ perl \
+ perl-io-socket-ssl \
+ perl-dev \
+ g++ \
+ make \
+ wget \
+ curl && \
+ set -o pipefail && \
+ curl -L https://cpanmin.us | perl - App::cpanminus && \
+ cpanm git://github.com/Akron/Mojolicious-Plugin-Localize.git \
+ git://github.com/Akron/Mojolicious-Plugin-TagHelpers-ContentBlock.git && \
+ cpanm Cpanel::JSON::XS \
+ EV \
+ IO::Socket::Socks && \
+ cpanm --installdeps . -M https://cpan.metacpan.org
+
+# Remove all build dependencies
+RUN apk del git \
+ perl-dev \
+ g++ \
+ make \
+ wget \
+ curl && \
+ rm -rf /root/.cpanm \
+ /usr/local/share/man
+
+RUN addgroup -S korap && \
+ adduser -S kalamar -G korap && \
+ chown -R kalamar.korap /kalamar
+
+USER kalamar
+
+EXPOSE 64543
+
+ENTRYPOINT [ "perl", "script/kalamar" ]
+
+CMD [ "daemon", "-m", "production", "-l", "http://*:64543" ]
+
+LABEL author="korap@ids-mannheim.de"
+LABEL description="Docker Image for Kalamar, the KorAP user frontend"
+LABEL repository="https://github.com/KorAP/Kalamar"