#
# First Stage
#
# Build go application using base image with golang installed
Bootstrap: docker
From: golang:1.12.3-alpine3.9
Stage: one


%post
        # prep environment
        export PATH="/go/bin:/usr/local/go/bin:$PATH"
        export HOME="/root"
        cd /root

        # insert source code, could also be copied from host with %files
        cat << EOF > hello.go
package main

import "fmt"

func main() {
    fmt.Printf("Hello World!\n")
}

EOF

        # build go application
        go build -o hello hello.go



#
# Second Stage
#
# Install go application into image without golang installed
Bootstrap: oras
From: ghcr.io/apptainer/alpine:3.15.0
Stage: two


# install go binary from stage one
%files from one
        /root/hello /bin/hello


# run application
%runscript
        hello

