zoukankan      html  css  js  c++  java
  • Docker部署go示例

        

    1.在main.go 文件中编写代码,这里我先用一段使用net/http库编写的简单代码为例讲解如何使用Docker进行部署,后面再讲解稍微复杂一点的项目部署案例。

    package main
    
    import (
    	"fmt"
    	"net/http"
    )
    
    func main() {
    	http.HandleFunc("/", hello)
    	server := &http.Server{
    		Addr: ":8888",
    	}
      fmt.Println("server startup...")
    	if err := server.ListenAndServe(); err != nil {
    		fmt.Printf("server startup failed, err:%v
    ", err)
    	}
    }
    
    func hello(w http.ResponseWriter, _ *http.Request) {
    	w.Write([]byte("hello liwenzhou.com!"))
    }
    

      上面的代码通过8888端口对外提供服务,返回一个字符串响应:hello liwenzhou.com!

    创建Docker镜像

    镜像(image)包含运行应用程序所需的所有东西——代码或二进制文件、运行时、依赖项以及所需的任何其他文件系统对象。

    或者简单地说,镜像(image)是定义应用程序及其运行所需的一切。

    编写Dockerfile

    要创建Docker镜像(image)必须在配置文件中指定步骤。这个文件默认我们通常称之为Dockerfile。(虽然这个文件名可以随意命名它,但最好还是使用默认的Dockerfile。)

    现在我们开始编写Dockerfile,具体内容如下:

    FROM golang:alpine
    
    # 为我们的镜像设置必要的环境变量 ,(轻型操作系统)容器的环境变量
    ENV GO111MODULE=on 
        CGO_ENABLED=0 
        GOOS=linux 
        GOARCH=amd64
    
    # 移动到工作目录:/build   类似于cd 命令切换到指定目录,容器启动后此目录下面会有切换到这个目录后,复制过来的文件
    WORKDIR /build
    
    # 将代码复制到容器中
    COPY . .
    
    # 将我们的代码编译成二进制可执行文件app
    RUN go build -o app .
    
    # 移动到用于存放生成的二进制文件的 /dist 目录
    WORKDIR /dist
    
    # 将二进制文件从 /build 目录复制到这里
    RUN cp /build/app .
    
    # 声明服务端口
    EXPOSE 8888
    
    # 启动容器时运行的命令
    CMD ["/dist/app"]
      
    

      

    构建镜像

    docker build . -t goweb_app

    运行镜像

    docker run -p 8888:8888 goweb_app
    

      

  • 相关阅读:
    C# 委托、事件,lamda表达式
    visual studio快捷键大全
    从零开始编写自己的C#框架(28)——建模、架构与框架
    从零开始编写自己的C#框架(27)——什么是开发框架
    从零开始编写自己的C#框架(26)——小结
    从零开始编写自己的C#框架(25)——网站部署
    科班出身和培训上岗的程序员谁更牛?
    女友眼中的IT男
    一千个选择python的理由
    亲身经历:程序人生路上的荆棘与感动
  • 原文地址:https://www.cnblogs.com/zxqblogrecord/p/14097900.html
Copyright © 2011-2022 走看看