FROM alpine:3.11 as compilation ARG OCAML_VERSION=4.11.1 RUN apk add gcc g++ make coreutils openssl ADD https://github.com/ocaml/ocaml/archive/${OCAML_VERSION}.tar.gz /src/ocaml.tar.gz WORKDIR /src/ocaml RUN tar xzf ../ocaml.tar.gz --strip-components=1 RUN ./configure RUN make world.opt RUN make install ARG OPAM_VERSION=2.1.0-beta2 ADD https://github.com/ocaml/opam/releases/download/${OPAM_VERSION}/opam-full-${OPAM_VERSION}.tar.gz /src/opam.tar.gz WORKDIR /src/opam RUN tar xzf ../opam.tar.gz --strip-components=1 RUN ./configure RUN make lib-ext RUN make RUN make install RUN rm -rf /src FROM alpine:3.11 as target LABEL Description="Minimal OCaml + opam Alpine container" Vendor="OCamlPro" RUN apk add gcc libc-dev make curl git sudo patch rsync m4 COPY --from=compilation /usr/local /usr/local RUN addgroup -S ocaml && adduser -S ocaml -G ocaml -s /bin/sh RUN echo 'ocaml ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers USER ocaml WORKDIR /home/ocaml ENV OPAMYES 1 ENV OPAMDEPEXTYES 1 ARG LAST_REPO_UPDATE=0 RUN echo "LAST_REPO_UPDATE=${LAST_REPO_UPDATE}" RUN ["/usr/local/bin/opam", "init", "-a", "--bare", "--disable-sandboxing"]