1- FROM ubuntu:22.04
1+ FROM alpine:3.17 AS builder
22
3- RUN set -ex; \
4- useradd --create-home codewarrior; \
5- mkdir -p /workspace; \
6- chown -R codewarrior:codewarrior /workspace;
7-
8- ENV OPAMROOT=/opt/opam \
9- OPAMCOLOR=never
3+ ENV OPAMROOT=/opt/ocaml
104
115RUN set -ex; \
126 mkdir -p $OPAMROOT; \
13- chown codewarrior:codewarrior $OPAMROOT; \
14- apt-get update; \
15- apt-get install -y --no-install-recommends \
16- software-properties-common \
17- libgmp-dev \
7+ adduser -D codewarrior; \
8+ chown -R codewarrior:codewarrior /opt/ocaml; \
9+ apk update; \
10+ apk add --virtual .build-deps \
11+ build-base \
12+ ocaml-compiler-libs \
13+ gmp-dev \
1814 opam \
1915 ;
2016
2117USER codewarrior
22- ENV USER=codewarrior \
23- HOME=/home/codewarrior
18+ ENV USER=codewarrior
2419
25- RUN opam init -y --shell-setup --compiler=4.14.0 --disable-sandboxing
20+ RUN set -ex; \
21+ opam init -y --disable-sandboxing --compiler=5.0.0;
2622
27- RUN opam install -y \
28- 'ounit2=2.2.6' \
29- 'ocamlfind=1.9.3' \
30- 'ocamlbuild=0.14.1' \
23+ RUN set -ex; \
24+ opam install -y \
25+ 'batteries=3.6.0' \
26+ 'base=v0.15.1' \
27+ 'domainslib=0.5.0' \
28+ 'ocamlbuild=0.14.2' \
29+ 'ocamlfind=1.9.6' \
30+ 'ounit2=2.2.7' \
3131 'zarith=1.12' \
32- 'batteries=3.5.1' \
33- 'core=v0.15.0' \
3432 ;
3533
36- ENV OPAM_SWITCH_PREFIX=$OPAMROOT/4.14.0 \
37- CAML_LD_LIBRARY_PATH=$OPAMROOT/4.14.0/lib/stublibs:$OPAMROOT/4.14.0/lib/ocaml/stublibs:$OPAMROOT/4.14.0/lib/ocaml \
38- OCAML_TOPLEVEL_PATH=$OPAMROOT/4.14.0/lib/toplevel \
39- PATH=$OPAMROOT/4.14.0/bin:$PATH
34+ FROM alpine:3.17
35+
36+ RUN set -ex; \
37+ apk add --no-cache \
38+ gcc \
39+ gmp-dev \
40+ musl-dev \
41+ ;
42+
43+ COPY --from=builder \
44+ /opt/ocaml/5.0.0/bin/ocamlc.opt \
45+ /opt/ocaml/5.0.0/bin/ocamlopt.opt \
46+ /opt/ocaml/5.0.0/bin/ocamldep.opt \
47+ /opt/ocaml/5.0.0/bin/ocamlbuild \
48+ /opt/ocaml/5.0.0/bin/ocamlfind \
49+ /opt/ocaml/5.0.0/bin/
50+ COPY --from=builder \
51+ /opt/ocaml/5.0.0/lib/ /opt/ocaml/5.0.0/lib/
52+
53+ RUN set -ex; \
54+ adduser -D codewarrior; \
55+ mkdir /workspace; \
56+ chown -R codewarrior:codewarrior /workspace;
57+
58+ USER codewarrior
59+ ENV USER=codewarrior \
60+ PATH=/opt/ocaml/5.0.0/bin:$PATH
4061
41- COPY workspace/test.ml /workspace/test.ml
42- COPY workspace/_tags / workspace/_tags
62+ COPY --chown=codewarrior:codewarrior workspace/. /workspace/
63+ WORKDIR / workspace\
0 commit comments