blob: 211a5bf8f27f32f6df9cfdb3fb52380e6720cd62 [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.
margarethac81c1242025-11-20 09:59:59 +01002# Backward compatilibity is added to support older docker compose deployments
margaretha036d8f82025-11-13 10:42:30 +01003
Akron26ddf722020-08-11 15:39:32 +02004# Use alpine linux as base image
Akron7ba60862024-08-09 16:55:01 +02005FROM eclipse-temurin:22-jdk-alpine AS builder
Akron26ddf722020-08-11 15:39:32 +02006# Copy repository respecting .dockerignore
7COPY . /kustvakt
Akron26ddf722020-08-11 15:39:32 +02008WORKDIR /kustvakt
Akron26ddf722020-08-11 15:39:32 +02009RUN apk update && \
10 apk add --no-cache git \
Akron8ae24622023-10-13 09:44:55 +020011 curl \
12 perl \
13 wget \
Akron26ddf722020-08-11 15:39:32 +020014 maven
Akron26ddf722020-08-11 15:39:32 +020015RUN git config --global user.email "korap+docker@ids-mannheim.de" && \
16 git config --global user.name "Docker"
17
18# Install Koral
Akron8ae24622023-10-13 09:44:55 +020019RUN curl -I https://github.com/KorAP/Koral/releases/latest | \
20 grep location | \
21 perl -e '$|++; <> =~ m/tag\/(v[\d\.]+(?:-release)?)/; print "https://github.com/KorAP/Koral/archive/refs/tags/${1}\.zip\n"' |\
22 wget -i - && \
23 unzip *.zip && \
24 cd Koral-* && \
Akron26ddf722020-08-11 15:39:32 +020025 mvn clean install
Akron8ae24622023-10-13 09:44:55 +020026RUN rm -r Koral-* v*.zip
Akron8ae24622023-10-13 09:44:55 +020027RUN mkdir built
Akron26ddf722020-08-11 15:39:32 +020028
29# Install Krill
Akron8ae24622023-10-13 09:44:55 +020030RUN curl -I https://github.com/KorAP/Krill/releases/latest | \
31 grep location | \
32 perl -e '$|++; <> =~ m/tag\/(v[\d\.]+(?:-release)?)/; print "https://github.com/KorAP/Krill/archive/refs/tags/${1}\.zip\n"' |\
33 wget -i - && \
34 unzip *.zip && \
35 cd Krill-* && \
Akron200aec42022-03-29 12:36:36 +020036 mvn clean install && \
37 mvn -Dmaven.test.skip=true package && \
38 mv target/Krill-Indexer.jar /kustvakt/built/Krill-Indexer.jar
Akron8ae24622023-10-13 09:44:55 +020039RUN rm -r Krill-* v*.zip
Akron26ddf722020-08-11 15:39:32 +020040
margarethabe756e52025-10-31 11:44:12 +010041# Kustvakt
margarethac81c1242025-11-20 09:59:59 +010042# --legacy-start
43RUN mvn clean package -P full && \
44 find target/Kustvakt-full-*.jar -exec mv {} /kustvakt/built/Kustvakt-full.jar ';'
45# --legacy-end
margaretha036d8f82025-11-13 10:42:30 +010046RUN mvn clean package && \
margarethabe756e52025-10-31 11:44:12 +010047 find target/Kustvakt-*.jar -exec mv {} /kustvakt/built/Kustvakt.jar ';'
margaretha036d8f82025-11-13 10:42:30 +010048RUN sed 's!\(krill\.indexDir\s*=\).\+!\1\/kustvakt\/index!' src/main/resources/kustvakt-lite.conf \
Akron26ddf722020-08-11 15:39:32 +020049 > built/kustvakt-lite.conf
margaretha036d8f82025-11-13 10:42:30 +010050RUN cat src/main/resources/kustvakt.conf | \
Akrona2228232022-05-23 17:25:48 +020051 sed 's!\(krill\.indexDir\s*=\).\+!\1\/kustvakt\/index!' | \
52 sed 's!\(ldap\.config\s*=\).\+!\1\/kustvakt\/ldap\/ldap\.conf!' | \
53 sed 's!\(oauth2\.initial\.super\.client\s*=\).\+!\1\/true!' | \
54 sed '$ a oauth2.initial.super.client = true' \
55 > built/kustvakt.conf
Akrona2228232022-05-23 17:25:48 +020056RUN sed 's!\(ldifFile\s*=\).\+!\1\/kustvakt\/ldap\/ldap.ldif!' \
Akron8ba7a152024-01-22 08:53:18 +010057 src/main/resources/embedded-ldap-example.conf \
Akrona2228232022-05-23 17:25:48 +020058 > built/ldap.conf
Akron8ba7a152024-01-22 08:53:18 +010059RUN cat src/main/resources/example-users.ldif \
Akrona2228232022-05-23 17:25:48 +020060 > built/ldap.ldif
Akron26ddf722020-08-11 15:39:32 +020061RUN apk del git \
Akron8ae24622023-10-13 09:44:55 +020062 perl \
63 curl \
64 wget \
Akron26ddf722020-08-11 15:39:32 +020065 maven
Akron26ddf722020-08-11 15:39:32 +020066RUN cd ${M2_HOME} && rm -r .m2
67
Akrone848ec02023-10-24 15:22:49 +020068# Cleanup
Akron8ba7a152024-01-22 08:53:18 +010069RUN rm -r src && \
Akrone848ec02023-10-24 15:22:49 +020070 rm -r wiki-index
71
Akrone848ec02023-10-24 15:22:49 +020072
margaretha036d8f82025-11-13 10:42:30 +010073FROM busybox:latest AS example-index
Akrone848ec02023-10-24 15:22:49 +020074WORKDIR /kustvakt
Akrone848ec02023-10-24 15:22:49 +020075RUN addgroup -S korap && \
76 adduser -S kustvakt -G korap && \
77 mkdir kustvakt && \
margaretha036d8f82025-11-13 10:42:30 +010078 chown -R kustvakt:korap /kustvakt
Akrone848ec02023-10-24 15:22:49 +020079COPY --from=builder /kustvakt/sample-index /kustvakt/index
margaretha036d8f82025-11-13 10:42:30 +010080USER kustvakt
81CMD ["sh"]
82
Akrone848ec02023-10-24 15:22:49 +020083
margarethabe756e52025-10-31 11:44:12 +010084FROM eclipse-temurin:22-jre-alpine AS kustvakt
Akron26ddf722020-08-11 15:39:32 +020085RUN addgroup -S korap && \
86 adduser -S kustvakt -G korap && \
87 mkdir kustvakt && \
88 chown -R kustvakt.korap /kustvakt
Akron26ddf722020-08-11 15:39:32 +020089WORKDIR /kustvakt
Akron26ddf722020-08-11 15:39:32 +020090USER kustvakt
margarethabe756e52025-10-31 11:44:12 +010091RUN mkdir ./ldap && \
92 mkdir ./client && \
93 mkdir ./data
margaretha036d8f82025-11-13 10:42:30 +010094COPY --from=builder /kustvakt/built/Kustvakt.jar /kustvakt
margarethabe756e52025-10-31 11:44:12 +010095COPY --from=builder /kustvakt/built/kustvakt.conf /kustvakt/data/
96COPY --from=builder /kustvakt/built/kustvakt-lite.conf /kustvakt/data/
Akrona2228232022-05-23 17:25:48 +020097COPY --from=builder /kustvakt/built/ldap.* /kustvakt/ldap/
Akronf9c12d12022-12-05 14:24:08 +010098COPY --from=builder /kustvakt/built/Krill-Indexer.jar /kustvakt/
Akrona2228232022-05-23 17:25:48 +020099EXPOSE 8089
margaretha036d8f82025-11-13 10:42:30 +0100100ENTRYPOINT [ "java", "-jar"]
101CMD ["Kustvakt.jar"]
Akrona2228232022-05-23 17:25:48 +0200102
margarethabe756e52025-10-31 11:44:12 +0100103# docker build -f Dockerfile -t korap/kustvakt:{nr} .
Akrone848ec02023-10-24 15:22:49 +0200104# docker build -f Dockerfile -t korap/example-index:{nr} --target example-index .
margaretha9c88cbd2025-11-19 12:30:46 +0100105# run lite version (default)
margaretha036d8f82025-11-13 10:42:30 +0100106# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr}
margaretha9c88cbd2025-11-19 12:30:46 +0100107# run full version
margarethac81c1242025-11-20 09:59:59 +0100108# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index korap/kustvakt:{nr} Kustvakt.jar --full
109
110# backward compatibility with older docker compose
111FROM eclipse-temurin:22-jre-alpine AS kustvakt-full
112RUN addgroup -S korap && \
113 adduser -S kustvakt -G korap && \
114 mkdir kustvakt && \
115 chown -R kustvakt.korap /kustvakt
116WORKDIR /kustvakt
117USER kustvakt
118RUN mkdir ./data
119COPY --from=builder /kustvakt/built/Kustvakt-full.jar /kustvakt/
120COPY --from=builder /kustvakt/built/Kustvakt.jar /kustvakt
121COPY --from=builder /kustvakt/built/kustvakt.conf /kustvakt/data/
122COPY --from=builder /kustvakt/built/ldap.* /kustvakt/ldap/
123COPY --from=builder /kustvakt/built/Krill-Indexer.jar /kustvakt/
124EXPOSE 8089
125ENTRYPOINT [ "java", "-jar" ]
126CMD [ "Kustvakt-full.jar" ]
127# docker build -f Dockerfile -t korap/kustvakt:{version} --target kustvakt-full .