From e76d6c09a41d7f2e579d57f70b9ad1930687076e Mon Sep 17 00:00:00 2001 From: Thomas Gazagnaire Date: Wed, 14 Jun 2017 16:13:40 +0100 Subject: [PATCH] sdk: fix dhcp's Dockerfile The rootfs were containing way too much binaries and runc command where not started in the correct directory. Signed-off-by: Thomas Gazagnaire --- projects/miragesdk/src/Dockerfile | 17 ++++++++--------- .../miragesdk/src/dhcp-client-calf/config.json | 2 +- projects/miragesdk/src/dhcp-client/main.ml | 2 +- projects/miragesdk/src/sdk.opam | 2 +- projects/miragesdk/src/sdk/net.ml | 4 ++++ 5 files changed, 15 insertions(+), 12 deletions(-) diff --git a/projects/miragesdk/src/Dockerfile b/projects/miragesdk/src/Dockerfile index 7476b676b..1cdc8c28d 100644 --- a/projects/miragesdk/src/Dockerfile +++ b/projects/miragesdk/src/Dockerfile @@ -56,7 +56,6 @@ RUN opam update sdk && opam install sdk -t FROM sdk as priv -RUN opam pin add tuntap 1.0.0 -n RUN opam depext -iy bos cmdliner RUN opam list @@ -65,8 +64,8 @@ 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 +RUN sudo mkdir -p /out +RUN sudo cp /src/_build/default/dhcp-client/main.exe /out/dhcp-client ### Calf Container @@ -85,15 +84,15 @@ 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 -USER 0 +RUN sudo mkdir -p /out/ +RUN sudo cp /src/_build/default/dhcp-client-calf/unikernel.exe /out/dhcp-client-calf ### Final build FROM scratch -COPY --from=priv /bin / -COPY --from=calf /bin / -COPY dhcp-client-calf/config.json /calf/ +USER 0 +COPY --from=priv /out / +COPY --from=calf /out /calf/rootfs/ +COPY dhcp-client-calf/config.json /calf CMD ["/dhcp-client", "-vv"] diff --git a/projects/miragesdk/src/dhcp-client-calf/config.json b/projects/miragesdk/src/dhcp-client-calf/config.json index 212e28393..7a6beace2 100644 --- a/projects/miragesdk/src/dhcp-client-calf/config.json +++ b/projects/miragesdk/src/dhcp-client-calf/config.json @@ -17,7 +17,7 @@ } }, "root": { - "path": "calf", + "path": "rootfs", "readonly": true }, "mounts": [ diff --git a/projects/miragesdk/src/dhcp-client/main.ml b/projects/miragesdk/src/dhcp-client/main.ml index 0637a7ceb..d51addabe 100644 --- a/projects/miragesdk/src/dhcp-client/main.ml +++ b/projects/miragesdk/src/dhcp-client/main.ml @@ -60,7 +60,7 @@ let default_cmd = [ *) let default_cmd = [ - "/usr/bin/runc"; "run"; "--preserve-fds"; "2"; "--bundle"; "."; "calf" + "/usr/bin/runc"; "run"; "--preserve-fds"; "2"; "--bundle"; "calf"; "calf" ] let read_cmd file = diff --git a/projects/miragesdk/src/sdk.opam b/projects/miragesdk/src/sdk.opam index da0c5dcff..ecaccaf18 100644 --- a/projects/miragesdk/src/sdk.opam +++ b/projects/miragesdk/src/sdk.opam @@ -23,7 +23,7 @@ depends: [ "decompress" "capnp-rpc-lwt" "rawlink" - "tuntap" + "tuntap" {= "1.0.0"} "ipaddr" "alcotest" {test} ] diff --git a/projects/miragesdk/src/sdk/net.ml b/projects/miragesdk/src/sdk/net.ml index d093888f5..2a99e60ce 100644 --- a/projects/miragesdk/src/sdk/net.ml +++ b/projects/miragesdk/src/sdk/net.ml @@ -2,8 +2,12 @@ open Lwt.Infix +let src = Logs.Src.create "net" ~doc:"Network Configuration" +module Log = (val Logs.src_log src : Logs.LOG) + let run fmt = Fmt.kstrf (fun str -> + Log.info (fun l -> l "run: %S" str); match Sys.command str with | 0 -> Lwt.return () | i -> Fmt.kstrf Lwt.fail_with "%S exited with code %d" str i