blob: e035048ce60967cc28f170ffe34224892e5f92a3 [file] [log] [blame]
Akron17c60812020-06-15 14:29:30 +02001# Build assets in builder image
Akron83a50992025-11-06 11:17:52 +01002FROM node:25 AS assetbuilder
dependabot[bot]cf833f32022-12-22 14:47:50 +00003
4WORKDIR '/app'
Akron17c60812020-06-15 14:29:30 +02005
6# This follows the "multi-stage build" pattern
7
Akron7ca73872021-03-08 11:29:11 +01008RUN npm install grunt && \
Akron17c60812020-06-15 14:29:30 +02009 npm install -g grunt-cli
10
11# Copy repository respecting .dockerignore
12COPY . /kalamar
13
14RUN cd /kalamar && \
15 npm install && \
16 grunt && \
17 rm -rf node_modules \
18 dev/css \
Akron17c60812020-06-15 14:29:30 +020019 dev/font \
20 dev/img \
Akron64b957d2020-10-07 22:39:53 +020021 dev/js/bench \
22 dev/js/runner \
23 dev/js/spec \
24 dev/scss && \
25 rm package-lock.json \
26 dev/robots.txt
Akron17c60812020-06-15 14:29:30 +020027
Akron16891402024-09-09 19:18:28 +020028# Use alpine linux AS base image
Marc Kupietza8fde632025-12-05 15:39:40 +010029FROM alpine:3.22 AS kalamar
Akron17c60812020-06-15 14:29:30 +020030
Akron17c60812020-06-15 14:29:30 +020031RUN apk update && \
32 apk add --no-cache git \
33 perl \
34 perl-io-socket-ssl \
35 perl-dev \
36 g++ \
37 make \
38 wget \
Akronb92fbb62024-08-09 15:58:47 +020039 perl-doc \
Akronb92fbb62024-08-09 15:58:47 +020040 libxml2-dev \
Marc Kupietz03cc3682024-12-16 14:20:54 +010041 perl-xml-libxml \
42 perl-module-pluggable \
43 perl-datetime \
44 perl-readonly \
Akronb92fbb62024-08-09 15:58:47 +020045 unzip \
Akron16891402024-09-09 19:18:28 +020046 curl && \
47 set -o pipefail
48
49RUN curl -fsSL https://raw.githubusercontent.com/kupietz/cpm/main/cpm > /bin/cpm && chmod a+x /bin/cpm
50
51RUN cpm install --test -g Cpanel::JSON::XS File::ShareDir::Install EV IO::Socket::Socks && \
Akron83a50992025-11-06 11:17:52 +010052 cpm install --test -g "https://github.com/KorAP/KorAP-XML-TEI/archive/refs/tags/v2.6.1.tar.gz" && \
Akronf06e1962025-11-07 15:14:55 +010053 cpm install --test -g "https://github.com/KorAP/KorAP-XML-Krill/archive/refs/tags/v0.64.tar.gz" && \
Akron16891402024-09-09 19:18:28 +020054 cpm install --test -g "https://github.com/KorAP/KorAP-XML-CoNLL-U/archive/refs/tags/v0.6.3.tar.gz"
Akron1b9c2432024-09-03 09:27:18 +020055
56# Copy assets from former container
57COPY --from=assetbuilder /kalamar /kalamar
58
59WORKDIR /kalamar
60
Akron2c502e22022-02-13 11:55:19 +010061# Install Kalamar including all dependencies
Akron16891402024-09-09 19:18:28 +020062RUN cpm install --test -g
Akron17c60812020-06-15 14:29:30 +020063
64# Remove all build dependencies
Akron16891402024-09-09 19:18:28 +020065RUN rm /bin/cpm && \
66 apk del git \
Akron17c60812020-06-15 14:29:30 +020067 perl-dev \
Akron2c502e22022-02-13 11:55:19 +010068 perl-doc \
Akron17c60812020-06-15 14:29:30 +020069 g++ \
Akron17c60812020-06-15 14:29:30 +020070 wget \
Akron2c502e22022-02-13 11:55:19 +010071 libxml2-dev \
Akron17c60812020-06-15 14:29:30 +020072 curl && \
73 rm -rf /root/.cpanm \
Akronefa2f762023-11-13 14:27:54 +010074 /usr/local/share/man
Akron17c60812020-06-15 14:29:30 +020075
76RUN addgroup -S korap && \
77 adduser -S kalamar -G korap && \
Marc Kupietz03cc3682024-12-16 14:20:54 +010078 chown -R kalamar:korap /kalamar
Akron17c60812020-06-15 14:29:30 +020079
80USER kalamar
81
Akronfce76d22022-03-28 19:42:58 +020082RUN mkdir /kalamar/data
83
Akroneeee0522026-05-05 15:42:43 +020084ENV MOJO_PORT=64543
85ENV MOJO_LISTEN=http://*:${MOJO_PORT}
86ENV MOJO_MODE=production
Akronf7918692020-06-19 07:12:05 +020087
Akronf412d442025-10-01 10:52:39 +020088RUN echo "{Kalamar=>{plugins=>['KorAPXML2Krill','Tei2KorAPXML','KorAPXML2CoNLLU','Plugins'],proxies=>['PROXY_STUB']},'Kalamar-Plugins'=>{default=>['PLUGIN_STUB']}}" > kalamar.production.conf
Akron77645c82022-02-24 18:21:27 +010089
Akronf7918692020-06-19 07:12:05 +020090EXPOSE ${MOJO_PORT}
Akron17c60812020-06-15 14:29:30 +020091
92ENTRYPOINT [ "perl", "script/kalamar" ]
93
Akronf7918692020-06-19 07:12:05 +020094CMD [ "daemon" ]
Akron17c60812020-06-15 14:29:30 +020095
Akronefd471e2022-03-29 15:07:17 +020096LABEL description="Docker Image for Kalamar, the KorAP user frontend, including Conversion"
Akronb92fbb62024-08-09 15:58:47 +020097LABEL maintainer="korap@ids-mannheim.de"
98LABEL repository="https://github.com/KorAP/Kalamar"
Akronefd471e2022-03-29 15:07:17 +020099
Akronb92fbb62024-08-09 15:58:47 +0200100# docker build -f Dockerfile -t korap/kalamar:x.xx-large --target kalamar .
Akronefa2f762023-11-13 14:27:54 +0100101
Akronf87af5c2026-01-24 12:24:38 +0100102# Slimming (https://github.com/mintoolkit/mint):
103# ./slim_script.sh "x.xx"