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 && ./configure && make world.opt && make install && rm -rf /src/ocaml ARG OPAM_VERSION=2.1.0-beta4 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 && ./configure && make lib-ext && make && make install && rm -rf /src/opam 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"]