blob: caa9fb193011318352d22837c32d0a98773fd93d [file] [log] [blame]
Marc Kupietz846e1492024-09-11 19:10:31 +02001FROM alpine:latest AS derekovecs
Marc Kupietza3774412022-06-10 21:46:22 +02002
Marc Kupietz846e1492024-09-11 19:10:31 +02003RUN apk update && \
4 apk add --no-cache git \
5 perl \
6 perl-io-socket-ssl \
7 perl-dev \
8 perl-inline-c \
9 g++ \
10 make \
Marc Kupietz96972c62026-07-31 09:50:14 +090011 cmake rocksdb-dev gflags-dev snappy-dev zlib-dev zstd-dev lz4-dev bzip2-dev linux-headers \
Marc Kupietz846e1492024-09-11 19:10:31 +020012 curl && \
13 set -o pipefail
14
15RUN curl -fsSL https://raw.githubusercontent.com/kupietz/cpm/main/cpm > /bin/cpm && chmod a+x /bin/cpm
Marc Kupietza3774412022-06-10 21:46:22 +020016
17WORKDIR /derekovecs
18
Marc Kupietza3774412022-06-10 21:46:22 +020019RUN git config --global user.email "korap+docker@ids-mannheim.de" && \
20 git config --global user.name "Docker"
21
Marc Kupietz96972c62026-07-31 09:50:14 +090022# Install collocatordb, which builds against the rocksdb package
Marc Kupietza3774412022-06-10 21:46:22 +020023RUN git clone "https://korap.ids-mannheim.de/gerrit/ids-kl/collocatordb" && \
24 cd collocatordb && \
25 mkdir -p build && \
26 cd build && \
27 cmake .. && \
Marc Kupietz96972c62026-07-31 09:50:14 +090028 make -j $(nproc) && \
Marc Kupietz846e1492024-09-11 19:10:31 +020029 make install
Marc Kupietza3774412022-06-10 21:46:22 +020030
Marc Kupietz846e1492024-09-11 19:10:31 +020031RUN cd /derekovecs && \
32 rm -rf collocatordb
33
34COPY . .
Marc Kupietza3774412022-06-10 21:46:22 +020035
36# Install dependencies
Marc Kupietz846e1492024-09-11 19:10:31 +020037RUN cpm install -g https://github.com/Akron/Mojolicious-Plugin-Localize.git && \
Marc Kupietz6835bf82024-11-15 17:26:01 +010038 cpm install -g Devel::CheckLib && \
Marc Kupietz846e1492024-09-11 19:10:31 +020039 cpm install -g
Marc Kupietza3774412022-06-10 21:46:22 +020040
41# Build derekovecs
42RUN perl Makefile.PL && \
43 make && \
44 make install
45
Marc Kupietz846e1492024-09-11 19:10:31 +020046# RUN MOJO_CONFIG=/derekovecs/example.conf hypnotoad -t script/derekovecs-server # Just do the Inlined::C stuff
47# does not work with slimming
Marc Kupietz10ccb982024-09-12 14:15:13 +020048RUN perl -p -i -e 's@"/example-models@"/derekovecs/example-models@' example-models/example-docker.conf
49RUN rm -rf example-models
50RUN rm -rf /root/.perl-cpm
Marc Kupietz846e1492024-09-11 19:10:31 +020051RUN rm /bin/cpm && \
52 apk del git \
53# g++ \
54 cmake \
55 curl && \
56 rm -rf /root/.cpanm \
57 /usr/local/share/man
Marc Kupietza3774412022-06-10 21:46:22 +020058
Marc Kupietza1f97022022-06-10 23:42:01 +020059ENV MOJO_CONFIG=/config/derekovecs.conf
Marc Kupietza3774412022-06-10 21:46:22 +020060
61EXPOSE 3000
62
63ENTRYPOINT [ "hypnotoad", "-f", "script/derekovecs-server" ]