Skip to content

Commit 38c1d6c

Browse files
committed
Use a multistage docker build
1 parent f8310b7 commit 38c1d6c

File tree

1 file changed

+39
-8
lines changed

1 file changed

+39
-8
lines changed

DockerOcamlbuild

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ocaml/opam:ubuntu-22.04-ocaml-5.0
1+
FROM ocaml/opam:ubuntu-22.04-ocaml-5.0 AS builder
22

33
# Base packages
44
RUN set -ex; \
@@ -18,11 +18,42 @@ RUN set -ex; \
1818
'zarith=1.12' \
1919
;
2020

21-
USER opam
22-
ENV USER=opam
21+
FROM ubuntu:22.04
2322

24-
RUN sudo mkdir -p /workspace; \
25-
sudo chown opam:opam /workspace
26-
COPY workspace/cwtest.ml /workspace/cwtest.ml
27-
COPY workspace/cwtest.mli /workspace/cwtest.mli
28-
COPY workspace/_tags /workspace/_tags
23+
RUN set -ex; \
24+
apt-get update; \
25+
apt-get install -y --no-install-recommends \
26+
gcc \
27+
libc6-dev \
28+
libgmp-dev \
29+
; \
30+
rm -rf /var/lib/apt/lists/*;
31+
32+
COPY --from=builder \
33+
/home/opam/.opam/5.0/bin/ocamlc.opt \
34+
/home/opam/.opam/5.0/bin/ocamlopt.opt \
35+
/home/opam/.opam/5.0/bin/ocamldep.opt \
36+
/home/opam/.opam/5.0/bin/ocamlbuild \
37+
/home/opam/.opam/5.0/bin/ocamlfind \
38+
/home/opam/.opam/5.0/bin/
39+
40+
COPY --from=builder /home/opam/.opam/5.0/lib/ /home/opam/.opam/5.0/lib/
41+
42+
RUN set -ex; \
43+
useradd --create-home codewarrior; \
44+
mkdir -p /workspace; \
45+
chown codewarrior: /workspace;
46+
47+
USER codewarrior
48+
ENV USER=codewarrior \
49+
PATH=/home/opam/.opam/5.0/bin:$PATH
50+
51+
COPY --chown=codewarrior:codewarrior workspace/. /workspace/
52+
WORKDIR /workspace
53+
# COPY --chown=codewarrior:codewarrior examples/batteries/. /workspace/
54+
55+
56+
# RUN OPAM_SWITCH_PREFIX='/home/opam/.opam/5.0'; export OPAM_SWITCH_PREFIX; \
57+
# CAML_LD_LIBRARY_PATH='/home/opam/.opam/5.0/lib/stublibs:/home/opam/.opam/5.0/lib/ocaml/stublibs:/home/opam/.opam/5.0/lib/ocaml'; export CAML_LD_LIBRARY_PATH; \
58+
# OCAML_TOPLEVEL_PATH='/home/opam/.opam/5.0/lib/toplevel'; export OCAML_TOPLEVEL_PATH; \
59+
# PATH='/home/opam/.opam/5.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'; export PATH;

0 commit comments

Comments
 (0)