blob: 4024c7218add3af93aa2894dfc0098d97242a1b2 [file] [log] [blame]
margaretha036d8f82025-11-13 10:42:30 +01001# *** WARNING *** This Dockerfile has been updated to build one image that can run both full and lite versions. The changes require updating existing docker compose files accordingly.
2
Akron26ddf722020-08-11 15:39:32 +02003# Use alpine linux as base image
Akron7ba60862024-08-09 16:55:01 +02004FROM eclipse-temurin:22-jdk-alpine AS builder
Akron26ddf722020-08-11 15:39:32 +02005# Copy repository respecting .dockerignore
6COPY . /kustvakt
Akron26ddf722020-08-11 15:39:32 +02007WORKDIR /kustvakt
Akron26ddf722020-08-11 15:39:32 +02008RUN apk update && \
9 apk add --no-cache git \
Akron8ae24622023-10-13 09:44:55 +020010 curl \
11 perl \
12 wget \
Akron26ddf722020-08-11 15:39:32 +020013 maven
Akron26ddf722020-08-11 15:39:32 +020014RUN git config --global user.email "korap+docker@ids-mannheim.de" && \
15 git config --global user.name "Docker"
16
17# Install Koral
Akron8ae24622023-10-13 09:44:55 +020018RUN curl -I https://github.com/KorAP/Koral/releases/latest | \
19 grep location | \
20 perl -e '$|++; <> =~ m/tag\/(v[\d\.]+(?:-release)?)/; print "https://github.com/KorAP/Koral/archive/refs/tags/${1}\.zip\n"' |\
21 wget -i - && \
22 unzip *.zip && \
23 cd Koral-* && \
Akron26ddf722020-08-11 15:39:32 +020024 mvn clean install
Akron8ae24622023-10-13 09:44:55 +020025RUN rm -r Koral-* v*.zip
Akron8ae24622023-10-13 09:44:55 +020026RUN mkdir built
Akron26ddf722020-08-11 15:39:32 +020027
28# Install Krill
Akron8ae24622023-10-13 09:44:55 +020029RUN curl -I https://github.com/KorAP/Krill/releases/latest | \
30 grep location | \
31 perl -e '$|++; <> =~ m/tag\/(v[\d\.]+(?:-release)?)/; print "https://github.com/KorAP/Krill/archive/refs/tags/${1}\.zip\n"' |\
32 wget -i - && \
33 unzip *.zip && \
34 cd Krill-* && \
Akron200aec42022-03-29 12:36:36 +020035 mvn clean install && \
36 mvn -Dmaven.test.skip=true package && \
37 mv target/Krill-Indexer.jar /kustvakt/built/Krill-Indexer.jar
Akron8ae24622023-10-13 09:44:55 +020038RUN rm -r Krill-* v*.zip
Akron26ddf722020-08-11 15:39:32 +020039
margarethabe756e52025-10-31 11:44:12 +010040# Kustvakt
margaretha036d8f82025-11-13 10:42:30 +010041RUN mvn clean package && \
margarethabe756e52025-10-31 11:44:12 +010042 find target/Kustvakt-*.jar -exec mv {} /kustvakt/built/Kustvakt.jar ';'
margaretha036d8f82025-11-13 10:42:30 +010043RUN sed 's!\(krill\.indexDir\s*=\).\+!\1\/kustvakt\/index!' src/main/resources/kustvakt-lite.conf \
Akron26ddf722020-08-11 15:39:32 +020044 > built/kustvakt-lite.conf
margaretha036d8f82025-11-13 10:42:30 +010045RUN cat src/main/resources/kustvakt.conf | \
Akrona2228232022-05-23 17:25:48 +020046 sed 's!\(krill\.indexDir\s*=\).\+!\1\/kustvakt\/index!' | \
47 sed 's!\(ldap\.config\s*=\).\+!\1\/kustvakt\/ldap\/ldap\.conf!' | \
48 sed 's!\(oauth2\.initial\.super\.client\s*=\).\+!\1\/true!' | \
49 sed '$ a oauth2.initial.super.client = true' \
50 > built/kustvakt.conf
Akrona2228232022-05-23 17:25:48 +020051RUN sed 's!\(ldifFile\s*=\).\+!\1\/kustvakt\/ldap\/ldap.ldif!' \
Akron8ba7a152024-01-22 08:53:18 +010052 src/main/resources/embedded-ldap-example.conf \
Akrona2228232022-05-23 17:25:48 +020053 > built/ldap.conf
Akron8ba7a152024-01-22 08:53:18 +010054RUN cat src/main/resources/example-users.ldif \
Akrona2228232022-05-23 17:25:48 +020055 > built/ldap.ldif
Akron26ddf722020-08-11 15:39:32 +020056RUN apk del git \
Akron8ae24622023-10-13 09:44:55 +020057 perl \
58 curl \
59 wget \
Akron26ddf722020-08-11 15:39:32 +020060 maven
Akron26ddf722020-08-11 15:39:32 +020061RUN cd ${M2_HOME} && rm -r .m2
62
Akrone848ec02023-10-24 15:22:49 +020063# Cleanup
Akron8ba7a152024-01-22 08:53:18 +010064RUN rm -r src && \
Akrone848ec02023-10-24 15:22:49 +020065 rm -r wiki-index
66
Akrone848ec02023-10-24 15:22:49 +020067
margaretha036d8f82025-11-13 10:42:30 +010068FROM busybox:latest AS example-index
Akrone848ec02023-10-24 15:22:49 +020069WORKDIR /kustvakt
Akrone848ec02023-10-24 15:22:49 +020070RUN addgroup -S korap && \
71 adduser -S kustvakt -G korap && \
72 mkdir kustvakt && \
margaretha036d8f82025-11-13 10:42:30 +010073 chown -R kustvakt:korap /kustvakt
Akrone848ec02023-10-24 15:22:49 +020074COPY --from=builder /kustvakt/sample-index /kustvakt/index
margaretha036d8f82025-11-13 10:42:30 +010075USER kustvakt
76CMD ["sh"]
77
Akrone848ec02023-10-24 15:22:49 +020078
margarethabe756e52025-10-31 11:44:12 +010079FROM eclipse-temurin:22-jre-alpine AS kustvakt
Akron26ddf722020-08-11 15:39:32 +020080RUN addgroup -S korap && \
81 adduser -S kustvakt -G korap && \
82 mkdir kustvakt && \
83 chown -R kustvakt.korap /kustvakt
Akron26ddf722020-08-11 15:39:32 +020084WORKDIR /kustvakt
Akron26ddf722020-08-11 15:39:32 +020085USER kustvakt
margarethabe756e52025-10-31 11:44:12 +010086RUN mkdir ./ldap && \
87 mkdir ./client && \
88 mkdir ./data
margaretha036d8f82025-11-13 10:42:30 +010089COPY --from=builder /kustvakt/built/Kustvakt.jar /kustvakt
margarethabe756e52025-10-31 11:44:12 +010090COPY --from=builder /kustvakt/built/kustvakt.conf /kustvakt/data/
91COPY --from=builder /kustvakt/built/kustvakt-lite.conf /kustvakt/data/
Akrona2228232022-05-23 17:25:48 +020092COPY --from=builder /kustvakt/built/ldap.* /kustvakt/ldap/
Akronf9c12d12022-12-05 14:24:08 +010093COPY --from=builder /kustvakt/built/Krill-Indexer.jar /kustvakt/
Akrona2228232022-05-23 17:25:48 +020094EXPOSE 8089
margaretha036d8f82025-11-13 10:42:30 +010095ENTRYPOINT [ "java", "-jar"]
96CMD ["Kustvakt.jar"]
Akrona2228232022-05-23 17:25:48 +020097
margarethabe756e52025-10-31 11:44:12 +010098# docker build -f Dockerfile -t korap/kustvakt:{nr} .
Akrone848ec02023-10-24 15:22:49 +020099# docker build -f Dockerfile -t korap/example-index:{nr} --target example-index .
margaretha036d8f82025-11-13 10:42:30 +0100100# run full version
101# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr}
102# run lite version
103# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr} Kustvakt.jar --lite