ubuntu@ubuntu18:/tmp/dockertmp$ mkdir go_docker
ubuntu@ubuntu18:/tmp/dockertmp$ cd go_docker/
ubuntu@ubuntu18:/tmp/dockertmp/go_docker$ vim main.go
ubuntu@ubuntu18:/tmp/dockertmp/go_docker$ vim Dockerfile
ubuntu@ubuntu18:/tmp/dockertmp/go_docker$ cat main.go
// main.go will output "Hello, Docker"
package main
import("fmt")
func main(){
fmt.Println("Hello, Docker")}
编写Dockerfile
ubuntu@ubuntu18:/tmp/dockertmp/go_docker$ cat Dockerfile
FROM golang:1.9 as builder
# define stage name as builder
RUN mkdir -p /go/src/test
WORKDIR /go/src/test
COPY main.go .
RUN CGO_ENABLED=O GOOS=linux go build -o app .
FROM alpine:latest
RUN apk add ca-certificates
WORKDIR /root/
COPY -–from=builder /go/src/test/app .# copy file from the builder stage
CMD ["./app"]
构建镜像
ubuntu@ubuntu18:/home/dockertmp/go_docker$ docker build -t go_docker:1.0 .
Sending build context to Docker daemon 3.072kB
Step 1/10 : FROM golang:1.9 as builder
---> ef89ef5c42a9
Step 2/10 : RUN mkdir -p /go/src/test
---> Running in b28f58f3c702
Removing intermediate container b28f58f3c702
---> c7b874c9a6ed
Step 3/10 : WORKDIR /go/src/test
---> Running in 685594b2b359
Removing intermediate container 685594b2b359
---> 447fff748732
Step 4/10 : COPY main.go .
---> 72a33eba04a0
Step 5/10 : RUN CGO_ENABLED=O GOOS=linux go build -o app .
---> Running in 23490f57e68e
Removing intermediate container 23490f57e68e
---> b00ae1eff594
Step 6/10 : FROM alpine:latest
---> e7d92cdc71fe
运行镜像
ubuntu@ubuntu18:/home/dockertmp/go_docker$ docker run --rm go_docker:1.0