FROM
golang:1.14-alpine AS build
We are creating our image using the base image golang:alpine
. This is basically an image just like what we want to create and is available for us on a Docker repository. This image runs the alpine Linux distribution which is small in size and has Golang already installed which is perfect for our use case.
From golang:alpine
RUN mkdir /files
COPY hello.go /files
WORKDIR /files
RUN go build -o /files/hello hello.go
ENTRYPOINT [ "/files/hello" ]
create a folder in docker and copy the golang source file to the created folder. Choose the created folder as our WORKDIR. Define Docker RUN to build a binary with go tool (build -o) to use the source file and specify the output. Docker ENTRYPOINT to run the binary file after Docker image has been loaded.
docker build -t go_hello:v1 .
Docker ‘build’ command with ‘-t’ options tag a new name for image and version. Docker ‘images’ command will list show an image name if above docker command has not error of build a new image file.
docker run –rm go_hello:v1
Docker ‘run’ command load the go_hello:v1 into a container and execute the the ENTRYPOINT defined in the Dockerfile.
docker tag go_hello:v1 "shankuo/go_hello:v1"
docker push "shankuo/go_hello:v1"
Docker ‘push’ command delivery the copy of docker image to the Docker Hub.