使用dockerfile制作镜像(实例)

编写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
发布了61 篇原创文章 · 获赞 22 · 访问量 4224

猜你喜欢

转载自blog.csdn.net/yiqiushi4748/article/details/104424781