Skip to content

Commit 880e332

Browse files
committed
Dockerfile: manually install opam and use Alpine-3.17
1 parent 38c1d6c commit 880e332

File tree

2 files changed

+50
-29
lines changed

2 files changed

+50
-29
lines changed

Dockerfile

Lines changed: 49 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,63 @@
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

115
RUN 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

2117
USER 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\

workspace/_tags

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
<cwtest.ml> or <cwtest.native> or <tests.ml>: package(ounit2)
2-
not <cwtest.ml>: package(batteries), package(base), package(domainslib), package(zarith)
2+
not <cwtest.ml>: thread, package(batteries), package(base), package(domainslib), package(zarith)

0 commit comments

Comments
 (0)