diff --git a/.dockerignore b/.dockerignore index 9414382..b6425eb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,3 @@ Dockerfile +tmp/**/* +dist/* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9385f34 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +from golang:1.21.4-alpine3.18 as build + +workdir /src +copy go.mod go.sum . +run go mod download + +copy . . +run go test ./... +run go build -o /go/bin/init -trimpath . + +# ------------------------------------------------------------------------ +from alpine:3.18.4 + +workdir /layer +run wget -O- https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-minirootfs-3.18.4-x86_64.tar.gz |tar zxv + +run apk add --no-cache -p . musl lvm2 lvm2-dmeventd udev cryptsetup e2fsprogs btrfs-progs lsblk +run rm -rf usr/share/apk var/cache/apk + +copy --from=build /go/bin/init . + +# check viability +run chroot /layer /init hello + +entrypoint ["sh","-c","find |cpio -H newc -o |base64"] diff --git a/alpine/Dockerfile b/alpine/Dockerfile deleted file mode 100644 index 156e359..0000000 --- a/alpine/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -# ------------------------------------------------------------------------ -from alpine:3.15 - -add alpine-minirootfs-3.15.0-x86_64.tar.gz /layer/ - -workdir /layer - -run apk update -run apk add -p . musl lvm2 lvm2-dmeventd udev cryptsetup e2fsprogs btrfs-progs -run rm -rf usr/share/apk var/cache/apk - -entrypoint ["sh","-c","find |cpio -H newc -o |base64"] diff --git a/alpine/alpine-minirootfs-3.15.0-x86_64.tar.gz b/alpine/alpine-minirootfs-3.15.0-x86_64.tar.gz deleted file mode 100644 index 9f3091c..0000000 Binary files a/alpine/alpine-minirootfs-3.15.0-x86_64.tar.gz and /dev/null differ diff --git a/main.go b/main.go index 5708813..1f2a1b4 100644 --- a/main.go +++ b/main.go @@ -50,6 +50,11 @@ func main() { } func runInit() { + if len(os.Args) > 1 && os.Args[1] == "hello" { + fmt.Println("hello world!") + os.Exit(0) + } + runtime.LockOSThread() if pid := os.Getpid(); pid != 1 {