从零开始使用docker部署Go Web App

docker的基本使用

如何在ubuntu 16.04上安装docker,以及docker的基本使用可以参考我的上一篇博客 服务计算之玩转 Docker

dockerfile的编写

要在docker上部署应用一定绕不开编写dockerfile,下面简单的总结一下dockerfile的编写规则

指令作用其他
FROM镜像使用的基础镜像我们创建的镜像都是从一个基础镜像中生成,如果在指定时没有加入tag选项,系统会默认使用latest镜像
MAINTAINER镜像的作者可以省略
RUN镜像在编译时运行的脚本RUN指令设置编译镜像时执行的脚本,镜像编译完成后,RUN指令的生命周期结束
CMD容器的启动命令
LABEL镜像的标签
EXPOSE镜像暴露的端口EXPOSE只设置暴露端口并不导出端口,只有启动容器时使用-P/-p才导出端口,这个时候才能通过外部访问容器提供的服务
ENV容器的环境变量
ADD编译时会被复制到镜像中的文件使用语法为ADD < src> < dest> 当src为文件或目录时,Docker Daemon会从编译目录寻找这些文件或目录,而dest为镜像中的绝对路径或者相对于WORKDIR的路径
COPY同ADD
ENTRYPOINT容器的入口程序入口程序是容器启动时执行的程序,docker run中最后的命令将作为参数传递给入口程序
VOLUME容器的挂载点启动容器时,Docker Daemon会新建挂载点,并用镜像中的数据初始化挂载点,可以将主机目录或数据卷容器挂载到这些挂载点
USER用户名USER可以设置RUN CMD ENTRYPOINT的用户名或UID
WORKDIR镜像运行的工作目录设置RUN CMD ENTRYPOINT ADD COPY指令的工作目录,如果工作目录不存在,则Docker Daemon会自动创建
ARG编译镜像时加入的参数
STOPSIGNAL容器的退出信号

如何应用这些规则来编写Dockerfile可以向下看Go Web App 的容器化的第三步

Go Web App 的容器化

编写一个简单的Go Web App

在go工作目录下新建一个main.go文件,写入如下代码,实现一个简单的监听8080端口的服务器

package main
import (
    "net/http"
    "fmt"
)
func main() {
    http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
        fmt.Fprint(writer, "Hello World")
    })
    http.ListenAndServe(":8080",nil)
}

编译main.go文件

在当前目录下打开终端,输入 go build -o main编译写好的main.go
此时目录下出现了生成的二进制文件main
在这里插入图片描述

编写 dockerfile

首先新建文件。在当前文件夹下执行指令 touch Dockerfile,注意将DockerfileD大写
现在文件夹下就出现了dockerfile
在这里插入图片描述
打开新建的Dockerfile

FROM golang:latest 
WORKDIR /
ADD main /
EXPOSE 8080
ENTRYPOINT ["./main"]
  • FROM golang:latest: docker 镜像选择从golang:latest构建
  • WORKDIR /: 设置工作路径为当前目录,容器启动时执行的命令会在当前目录下执行
  • ADD main /: 将当前路径的main文件添加进docker容器里面
  • EXPOSE 8080: 设置暴露的端口为8080
  • ENTRYPOINT ["./main"]: 设置容器启动时执行的程序为当前目录的main程序

构建镜像

使用下面的指令构建镜像
docker build -t web .
其中 -t 参数后的 web 制定了镜像名
在这里插入图片描述
执行docker images查看创建的镜像
在这里插入图片描述
可以看到我们刚刚创建的镜像web

运行容器

在终端执行下面的指令使用创建好的 web 镜像启动一个容器
docker run --rm -it -d -p 8080:8080 web
在这里插入图片描述

  • docker run 命令用于指定镜像上上启动一个容器,这里指定为web镜像
  • -it 表示以交互的方式启动容器
  • –rm 表示在容器关闭后将会将其清除
  • -p 8080:8080 标签允许通过8080端口访问该容器
  • -d 后台运行

测试 Go Web App

在浏览器中输入网址 localhost:8080
可以看到网页上成功输出了“hello world”,说明容器化应用成功!
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值