blob: 16632734d72f3f60634a9780f9a40f8223f26575 [file] [log] [blame]
Akron26ddf722020-08-11 15:39:32 +02001# Use alpine linux as base image
Akron7ba60862024-08-09 16:55:01 +02002FROM eclipse-temurin:22-jdk-alpine AS builder
Akron26ddf722020-08-11 15:39:32 +02003
4# Copy repository respecting .dockerignore
5COPY . /kustvakt
6
7WORKDIR /kustvakt
8
9RUN 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
15
16RUN git config --global user.email "korap+docker@ids-mannheim.de" && \
17 git config --global user.name "Docker"
18
19# Install Koral
Akron8ae24622023-10-13 09:44:55 +020020RUN curl -I https://github.com/KorAP/Koral/releases/latest | \
21 grep location | \
22 perl -e '$|++; <> =~ m/tag\/(v[\d\.]+(?:-release)?)/; print "https://github.com/KorAP/Koral/archive/refs/tags/${1}\.zip\n"' |\
23 wget -i - && \
24 unzip *.zip && \
25 cd Koral-* && \
Akron26ddf722020-08-11 15:39:32 +020026 mvn clean install
27
Akron8ae24622023-10-13 09:44:55 +020028RUN rm -r Koral-* v*.zip
margarethabe756e52025-10-31 11:44:12 +010029
30#RUN curl -L -o koral-head.zip https://github.com/KorAP/Koral/archive/HEAD.zip && \
31# unzip koral-head.zip && \
32# cd Koral-* && \
33# mvn clean install && \
34# cd /kustvakt && \
35# rm -rf Koral-* koral-head.zip
36
Akron8ae24622023-10-13 09:44:55 +020037RUN mkdir built
Akron26ddf722020-08-11 15:39:32 +020038
39# Install Krill
Akron8ae24622023-10-13 09:44:55 +020040RUN curl -I https://github.com/KorAP/Krill/releases/latest | \
41 grep location | \
42 perl -e '$|++; <> =~ m/tag\/(v[\d\.]+(?:-release)?)/; print "https://github.com/KorAP/Krill/archive/refs/tags/${1}\.zip\n"' |\
43 wget -i - && \
44 unzip *.zip && \
45 cd Krill-* && \
Akron200aec42022-03-29 12:36:36 +020046 mvn clean install && \
47 mvn -Dmaven.test.skip=true package && \
48 mv target/Krill-Indexer.jar /kustvakt/built/Krill-Indexer.jar
Akron26ddf722020-08-11 15:39:32 +020049
Akron8ae24622023-10-13 09:44:55 +020050RUN rm -r Krill-* v*.zip
Akron26ddf722020-08-11 15:39:32 +020051
Akron26ddf722020-08-11 15:39:32 +020052
margarethabe756e52025-10-31 11:44:12 +010053# Kustvakt
54RUN mvn clean package -DskipTests=true && \
55 find target/Kustvakt-*.jar -exec mv {} /kustvakt/built/Kustvakt.jar ';'
56
57 RUN sed 's!\(krill\.indexDir\s*=\).\+!\1\/kustvakt\/index!' src/main/resources/kustvakt-lite.conf \
Akron26ddf722020-08-11 15:39:32 +020058 > built/kustvakt-lite.conf
59
margarethabe756e52025-10-31 11:44:12 +010060 RUN cat src/main/resources/kustvakt.conf | \
Akrona2228232022-05-23 17:25:48 +020061 sed 's!\(krill\.indexDir\s*=\).\+!\1\/kustvakt\/index!' | \
62 sed 's!\(ldap\.config\s*=\).\+!\1\/kustvakt\/ldap\/ldap\.conf!' | \
63 sed 's!\(oauth2\.initial\.super\.client\s*=\).\+!\1\/true!' | \
64 sed '$ a oauth2.initial.super.client = true' \
65 > built/kustvakt.conf
66
67RUN sed 's!\(ldifFile\s*=\).\+!\1\/kustvakt\/ldap\/ldap.ldif!' \
Akron8ba7a152024-01-22 08:53:18 +010068 src/main/resources/embedded-ldap-example.conf \
Akrona2228232022-05-23 17:25:48 +020069 > built/ldap.conf
70
Akron8ba7a152024-01-22 08:53:18 +010071RUN cat src/main/resources/example-users.ldif \
Akrona2228232022-05-23 17:25:48 +020072 > built/ldap.ldif
73
Akron26ddf722020-08-11 15:39:32 +020074RUN apk del git \
Akron8ae24622023-10-13 09:44:55 +020075 perl \
76 curl \
77 wget \
Akron26ddf722020-08-11 15:39:32 +020078 maven
79
80RUN cd ${M2_HOME} && rm -r .m2
81
Akrone848ec02023-10-24 15:22:49 +020082# Cleanup
Akron8ba7a152024-01-22 08:53:18 +010083RUN rm -r src && \
Akrone848ec02023-10-24 15:22:49 +020084 rm -r wiki-index
85
margarethabe756e52025-10-31 11:44:12 +010086FROM eclipse-temurin:22-jre-alpine AS example-index
Akrone848ec02023-10-24 15:22:49 +020087
88WORKDIR /kustvakt
89
90RUN addgroup -S korap && \
91 adduser -S kustvakt -G korap && \
92 mkdir kustvakt && \
93 chown -R kustvakt.korap /kustvakt
94
95COPY --from=builder /kustvakt/sample-index /kustvakt/index
96
margarethabe756e52025-10-31 11:44:12 +010097FROM eclipse-temurin:22-jre-alpine AS kustvakt
Akron26ddf722020-08-11 15:39:32 +020098
99RUN addgroup -S korap && \
100 adduser -S kustvakt -G korap && \
101 mkdir kustvakt && \
102 chown -R kustvakt.korap /kustvakt
103
104WORKDIR /kustvakt
105
Akron26ddf722020-08-11 15:39:32 +0200106USER kustvakt
107
margarethabe756e52025-10-31 11:44:12 +0100108RUN mkdir ./ldap && \
109 mkdir ./client && \
110 mkdir ./data
Akron26ddf722020-08-11 15:39:32 +0200111
margarethabe756e52025-10-31 11:44:12 +0100112COPY --from=builder /kustvakt/built/Kustvakt.jar /kustvakt/
113COPY --from=builder /kustvakt/built/kustvakt.conf /kustvakt/data/
114COPY --from=builder /kustvakt/built/kustvakt-lite.conf /kustvakt/data/
Akrona2228232022-05-23 17:25:48 +0200115COPY --from=builder /kustvakt/built/ldap.* /kustvakt/ldap/
Akronf9c12d12022-12-05 14:24:08 +0100116COPY --from=builder /kustvakt/built/Krill-Indexer.jar /kustvakt/
Akrona2228232022-05-23 17:25:48 +0200117
Akrona2228232022-05-23 17:25:48 +0200118EXPOSE 8089
119
margarethabe756e52025-10-31 11:44:12 +0100120ENTRYPOINT [ "java", "-jar", "/kustvakt/Kustvakt.jar"]
Akrona2228232022-05-23 17:25:48 +0200121
margarethabe756e52025-10-31 11:44:12 +0100122# docker build -f Dockerfile -t korap/kustvakt:{nr} .
Akrone848ec02023-10-24 15:22:49 +0200123# docker build -f Dockerfile -t korap/example-index:{nr} --target example-index .
margarethabe756e52025-10-31 11:44:12 +0100124# docker run --rm --net host -v [absolute-path-sample-index]:/kustvakt/index -it korap/kustvakt:{nr} --lite