Repository navigation
Expand file tree
/
Copy pathDockerfile
More file actions
50 lines (42 loc) · 1.77 KB
/
Copy pathDockerfile
File metadata and controls
50 lines (42 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
FROM ocaml/opam:alpine-ocaml-4.13-flambda AS build
LABEL author="Davide Albiero, Damiano Mason"
WORKDIR /home/opam
# PPL related
# Update system
RUN sudo apk add m4 gmp-dev gmp-static perl mpfr-dev --no-cache
# Dwwnload PPL archive, build and install it, then remove those files
RUN wget https://support.bugseng.com/ppl/download/ftp/releases/1.2/ppl-1.2.tar.xz && \
tar xfv ppl-1.2.tar.xz && \
cd ppl-1.2 && \
./configure && \
make -j$(nproc) && \
sudo make install && \
# could skip install check to save time
make -j$(nproc) installcheck && \
cd .. && \
rm -rf ppl-1.2 ppl-1.2.tar.xz
# OPAM related
# Install needed (online) libraries
RUN opam install conf-ppl apron -y
# Move fixed version libraries to the container
# fix permissions during copy
COPY --chown=opam:opam src/camllib /home/opam/camllib
COPY --chown=opam:opam src/fixpoint /home/opam/fixpoint
COPY --chown=opam:opam src/interproc /home/opam/interproc
# Pin those version with -n to avoid install at every pin
RUN opam pin add camllib ./camllib -n && \
opam pin add fixpoint ./fixpoint -n && \
opam pin add interproc ./interproc -n && \
# depext takes care of install pinned libs
opam depext -i interproc -y && \
opam exec -- make -C /home/opam/interproc all
FROM httpd:2.4-alpine AS server
LABEL author="Davide Albiero, Damiano Mason"
WORKDIR /usr/local/apache2
COPY --from=build /home/opam/interproc/_build/default/interprocweb.exe /usr/local/apache2/cgi-bin/interproc
COPY src/interproc/examples/* /usr/local/apache2/cgi-bin/examples/
COPY frontend/show_program.js /usr/local/apache2/htdocs/show_program.js
COPY frontend/index.html /usr/local/apache2/htdocs/interproc.html
COPY docker/httpd.conf /usr/local/apache2/conf/httpd.conf
CMD ["httpd-foreground"]
EXPOSE 80