使用dockerfile製作Go實例鏡像(實例)

編寫go文件

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章