Files
linuxkit/projects/miragesdk/src/Dockerfile
Mindy Preston bcb0c52fff nudge some build updates around
build from (now-released) canpnproto 0.6.0; use the latest jbuilder beta.

Signed-off-by: Mindy Preston <mindy.preston@docker.com>
2017-06-09 13:38:55 -05:00

89 lines
2.2 KiB
Docker

### Capnp compiler
FROM alpine:3.5 as capnp
RUN mkdir -p /src
RUN apk update && apk add autoconf automake libtool linux-headers git g++ make
RUN cd /src && git clone -b v0.6.0 https://github.com/sandstorm-io/capnproto.git
WORKDIR /src/capnproto/c++
RUN ./setup-autotools.sh
RUN autoreconf -i
RUN ./configure
RUN make -j6 check
RUN make install
RUN which capnp
### SDK
FROM ocaml/opam:alpine-3.5_ocaml-4.04.0 as sdk
RUN git -C /home/opam/opam-repository pull && opam update -u
COPY --from=capnp /usr/local/bin/capnp /usr/local/bin/
COPY --from=capnp /usr/local/lib/libcapnpc-0.6.0.so /usr/local/lib/
COPY --from=capnp /usr/local/lib/libcapnp-0.6.0.so /usr/local/lib/
COPY --from=capnp /usr/local/lib/libkj-0.6.0.so /usr/local/lib/
RUN sudo mkdir -p /src
USER opam
WORKDIR /src
RUN opam pin add jbuilder 1.0+beta9 -n
RUN opam depext -uiy cstruct cstruct-lwt lwt lwt logs irmin-git rawlink tuntap astring rresult \
mirage-flow-lwt mirage-channel-lwt io-page decompress capnp
RUN opam list
COPY ./sdk /src/
COPY ./sdk.opam /src/
RUN sudo chown opam -R /src
RUN opam config exec -- jbuilder build -p sdk @install
RUN opam config exec -- jbuilder install sdk
### Privileged Container
FROM sdk as priv
RUN opam pin add tuntap 1.0.0 -n
RUN opam depext -iy bos cmdliner
RUN opam list
COPY ./dhcp-client /src/dhcp-client
RUN sudo chown opam -R /src
RUN opam config exec -- jbuilder build dhcp-client/main.exe
RUN sudo mkdir -p /bin
RUN sudo cp /src/_build/default/dhcp-client/main.exe /bin/dhcp-client
### Calf Container
FROM sdk as calf
RUN opam pin add charrua-client https://github.com/yomimono/charrua-client.git#state-halfway -n
RUN opam pin add mirage-net-fd 0.2.0 -n
RUN opam depext -iy mirage-net-fd charrua-client lwt mirage-types-lwt cmdliner
RUN opam list
COPY ./dhcp-client-calf/unikernel.ml /src/dhcp-client-calf/
COPY ./dhcp-client-calf/jbuild /src/dhcp-client-calf/
RUN sudo chown opam -R /src
RUN opam config exec -- jbuilder build dhcp-client-calf/unikernel.exe
RUN sudo mkdir -p /bin/calf
RUN sudo cp /src/_build/default/dhcp-client-calf/unikernel.exe /bin/calf/dhcp-client-calf
### Final build
FROM scratch
COPY --from=priv /bin /
COPY --from=calf /bin /
COPY dhcp-client-calf/config.json /calf/
CMD ["/dhcp-client", "-vv"]