美文网首页
docker 运行 go语言二进制(scratch)程序

docker 运行 go语言二进制(scratch)程序

作者: 渣渣曦 | 来源:发表于2018-12-30 08:52 被阅读0次

    1、创建dockerfile文件命名为“Dockerfile.scratch"

    # 使用scratch开启
    FROM scratch
    # 拷贝编译程序
    COPY main main
    # 打开8080端口
    EXPOSE 8080
    # 运行!
    CMD ["./main"]
    

    2、使用go程序编写一个web服务

    package main
    
    import (
    "fmt"
    "net/http"
    )
    
    func handler(w http.ResponseWriter, r *http.Request) {
            fmt.Fprintf(w, "hello world!")
    }
    
    func main() {
            http.HandleFunc("/", handler)
            fmt.Println("服务端口: 8080")
            http.ListenAndServe(":8080", nil)
    }
    

    3、编译程序、创建镜像、运行服务

    $ go build main.go
    $ sudo docker build -t webserver -f Dockerfile.scratch .
    $ sudo docker run webserver
    standard_init_linux.go:190: exec user process caused "no such file or directory"
    

    运行程序会报以上错误,原因是cgo需要libc库,使用以下命令重新编译运行:

    $ CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main .
    $ sudo docker build -t webserver -f Dockerfile.scratch .
    $ sudo docker run -p 8080:8080 webserver
    服务端口: 8080
    

    成功开启docker容器的 go web服务

    相关文章

      网友评论

          本文标题:docker 运行 go语言二进制(scratch)程序

          本文链接:https://www.haomeiwen.com/subject/zljplqtx.html