1
+ # syntax=docker/dockerfile:1
1
2
FROM ocaml/opam:alpine-3.21-ocaml-5.2 AS build
2
3
RUN sudo ln -sf /usr/bin/opam-2.3 /usr/bin/opam && opam init --reinit -ni
3
4
4
5
# Install system dependencies
5
- RUN sudo apk -U upgrade --no-cache && sudo apk add --no-cache \
6
+ RUN --mount=type=cache,target=/var/cache/apk,sharing=locked \
7
+ sudo ln -s /var/cache/apk /etc/apk/cache && \
8
+ sudo apk -U upgrade && sudo apk add \
6
9
autoconf \
7
10
curl-dev \
8
11
gmp-dev \
@@ -17,8 +20,9 @@ RUN cd ~/opam-repository && git reset --hard de786e28dbea73843ad5e5f0290a4e81fba
17
20
WORKDIR /home/opam
18
21
19
22
# Install opam dependencies
20
- COPY --chown=opam ocamlorg.opam .
21
- RUN opam install . --deps-only
23
+ COPY --chown=opam --link ocamlorg.opam .
24
+ RUN --mount=type=cache,target=/home/opam/.opam/download-cache,sharing=locked,uid=1000,gid=1000 \
25
+ opam install . --deps-only
22
26
23
27
# Build project
24
28
COPY --chown=opam . .
@@ -33,18 +37,20 @@ RUN touch package.state && ./init-cache package.state
33
37
34
38
FROM alpine:3.21
35
39
36
- RUN apk -U upgrade --no-cache && apk add --no-cache \
40
+ RUN --mount=type=cache,target=/var/cache/apk,sharing=locked \
41
+ ln -s /var/cache/apk /etc/apk/cache && \
42
+ apk -U upgrade && apk add \
37
43
git \
38
44
gmp \
39
45
libev
40
46
41
- COPY --from=build /home/opam/package.state /var/package.state
42
- COPY --from=build /home/opam/opam-repository /var/opam-repository
43
- COPY --from=build /home/opam/_build/default/src/ocamlorg_web/bin/main.exe /bin/server
47
+ COPY --from=build --link /home/opam/package.state /var/package.state
48
+ COPY --from=build --link /home/opam/opam-repository /var/opam-repository
49
+ COPY --from=build --link /home/opam/_build/default/src/ocamlorg_web/bin/main.exe /bin/server
44
50
45
- COPY playground/asset playground/asset
51
+ COPY --link playground/asset playground/asset
46
52
47
- RUN git clone https://github.com/ocaml-web/html-compiler-manuals /manual
53
+ ADD --keep- git-dir --link https://github.com/ocaml-web/html-compiler-manuals /manual
48
54
49
55
RUN git config --global --add safe.directory /var/opam-repository
50
56
0 commit comments