美文网首页docker区块链
Docker实战 - 将golang工程部署到docker

Docker实战 - 将golang工程部署到docker

作者: d866c6045d74 | 来源:发表于2017-10-31 21:39 被阅读214次

    目标功能

    使用go语言实现基本http服务 访问 localhost:8080 时能够返回 “hellodocker”

    将工程部署到docker,并在后台启动

    重点难点

    • dockerfile结构
    • docker网络结构

    操作步骤

    Go工程

    1 在本机新建go工程,目录名为hellodocker

    package main
    
    import (
        "fmt"
        "net/http"
    )
    
    func indexHandler(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "hello docker")
    
    }
    
    func main() {
        http.HandleFunc("/", indexHandler)
        http.ListenAndServe(":8080", nil)
    }
    

    2 编译和执行
    3 打开浏览器输入 localhost:8080 当屏幕出现 “hellodocker”说明程序正常

    制作docker镜像

    1 在工程目录hellodocker下,新建dockerfile文件

    FROM golang:latest
    
    MAINTAINER Razil "raymond_2008@yahoo.com"
    
    WORKDIR $GOPATH/src/hellodocker
    ADD . $GOPATH/src/hellodocker
    RUN go build .
    
    EXPOSE 8080
    
    ENTRYPOINT ["./hellodocker"]
    

    FROM -> 母镜像
    MAINTAINER -> 维护者信息
    WORKDIR -> 工作目录
    ADD -> 将文件复制到镜像中
    RUN -> 执行操作(就跟在终端执行语句一样)
    EXPOSE -> 暴露端口
    ENTRYPOINT -> 程序入口

    2 打开终端输入

    docker build -t hellodocker .
    

    语句的意思是
    docker build ->构建镜像
    hellodocker -> 名字为hellodocker
    . (点号) -> dockerfile目录为当前目录

    如果未使用镜像服务器,比如Daccloud,阿里云等,构建速度会需要较长时间

    3 查看docker镜像

    在终端中输入

    docker images
    

    里面显示了本机所有docker的镜像与其基本信息

    4 开启docker(前台方式)

    在终端输入

    docker run -p 8080:8080 hellodocker
    

    语句意思:

    docker run -> 运行docker镜像
    -p 8080:8080 -> 将宿主机(也就是本机)的8080端口映射到容器的8080端口,此 处需要先确认本机的8080端口并未被占用,否则将无法开启
    hellodocker -> 镜像名(也支持id)

    5 开启docker(后台方式)

    当在前台开启时候,终端无法进行其他操作,docker支持让容器在后台执行。

    在终端输入

    docker run -p 8080:8080 -d hellodocker
    

    6 停止docker

    停止和退出docker有两种方法,一个是kill另一个是stop
    两种的区别是
    stop :系统先发送停止信号,有充分的时间(默认10s)完成清理后再发送kill信号让容器退出
    kill : 系统直接发送退出信号,让容器强制退出

    具体操作: 我们在上一步 docker ps 中看到后台容器的运行情况,里面每个容器都有其独立的container id。 复制需要关闭的容器id 当前hellodocker的id是

    83f1e6dffbc2
    

    在终端输入

    docker stop 83f1e6dffbc2或docker kill 83f1e6dffbc2
    

    相关文章

      网友评论

        本文标题:Docker实战 - 将golang工程部署到docker

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