9752d71739d2 Step 2 : RUN mkdir -p /go/src/web-app ---> Running in 9aef92fff9e8 ---> 49936ff4f50c Removing intermediate container 9aef92fff9e8 Step 3 : WORKDIR /go/src/web-app ---> Running in 58440a93534c ---> 0703574296dd Removing intermediate container 58440a93534c Step 4 : COPY . /go/src/web-app ---> 82be55bc8e9f Removing intermediate container cae309ac7757 Step 5 : RUN go-wrapper download ---> Running in 6168e4e96ab1 + exec go get -v -d ---> 59664b190fee Removing intermediate container 6168e4e96ab1 Step 6 : RUN go-wrapper install ---> Running in e56f093b6f03 + exec go install -v web-app ---> 584cd410fdcd Removing intermediate container e56f093b6f03 Step 7 : ENV PORT 8080 ---> Running in 298e2a415819 ---> c87fd2b43977 Removing intermediate container 298e2a415819 Step 8 : EXPOSE 8080 ---> Running in 4f639a3790a7 ---> 291167229d6f Removing intermediate container 4f639a3790a7 Step 9 : CMD go-wrapper run ---> Running in 6cb6bc28e406 ---> b32ca91bdfe0 Removing intermediate container 6cb6bc28e406 Successfully built b32ca91bdfe0

现在可以运行我们的 web-app 了,可以执行下面的命令。

root@demohost:~/web-app# docker run -p 8080:8080 --name="test" -d web-app 7644606b9af28a3ef1befd926f216f3058f500ffad44522c1d4756c576cfa85b

进入 http://localhost:8080/World 浏览你的 web 应用。你已经成功容器化了一个可重复的/确定性的 Go web 应用。使用下面的命令来启动、停止并检查容器的状态。

###列出所有容器

root@demohost:~/ docker ps -a

###使用 id 启动容器

root@demohost:~/ docker start CONTAINER_ID_OF_WEB_APP

###使用 id 停止容器

root@demohost:~/ docker stop CONTAINER_ID_OF_WEB_APP
重新构建镜像

假设你正在开发 web 应用程序并在更改代码。现在要在更新代码后查看结果,你需要重新生成 docker 镜像、停止旧镜像并运行新镜像,并且每次更改代码时都要这样做。为了使这个过程自动化,我们将使用 docker 卷在主机和容器之间共享一个目录。这意味着你不必为在容器内进行更改而重新构建镜像。容器如何检测你是否对 web 程序的源码进行了更改?答案是有一个名为 “Gin” 的好工具 https://github.com/codegangsta/gin,它能检测是否对源码进行了任何更改,然后重建镜像/二进制文件并在容器内运行更新过代码的进程。

要使这个过程自动化,我们将编辑 Dockerfile 并安装 Gin 将其作为入口命令来执行。我们将开放 3030 端口(Gin 代理),而不是 8080。 Gin 代理将转发流量到 web 程序的 8080 端口。

root@demohost:~/web-app# vim.tiny Dockerfile

# 得到最新的 golang docker 镜像

FROM golang:latest

# 在容器内部创建一个目录来存储我们的 web 应用,接着使它称为工作目录。

RUN mkdir -p /go/src/web-app

WORKDIR /go/src/web-app

# 复制 web 程序到容器中

COPY . /go/src/web-app

# 下载并安装第三方依赖到容器中

RUN go get github.com/codegangsta/gin

RUN go-wrapper download

RUN go-wrapper install

# 设置 PORT 环境变量

ENV PORT 8080

# 给主机暴露 8080 端口,这样外部网络可以访问你的应用

EXPOSE 3030

# 启动容器时运行

Gin CMD gin run

# 告诉 Docker 启动容器运行的命令

CMD ["go-wrapper""run"]

现在构建镜像并启动容器:

root@demohost:~/web-app# docker build --rm -t web-app .

我们会在当前 web 程序的根目录下运行 docker,并通过暴露的 3030 端口链接 CWD (当前工作目录)到容器中的应用目录下。

root@demohost:~/web-app# docker run -p 3030:3030 -v `pwd`:/go/src/web-app --name="test" -d web-app

打开 http://localhost:3030/World, 你就能看到你的 web 程序了。现在如果你改变了任何代码,会在浏览器刷新后反映在你的浏览器中。

总结

就是这样,我们的 Go web 应用已经运行在 Ubuntu 16.04 Docker 容器中运行了!你可以通过使用 Go 框架来快速开发 API、网络应用和后端服务,从而扩展当前的网络应用。

本文来源:www.lxlinux.net/7154.html,若引用不当,请联系修改。

-->

1.软文推荐

2.软文推荐

3.软文推荐

Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。

用 Go 语言创建一个 “Hello World” web 应用

首先我们为 Go 应用创建一个目录,它会在浏览器中显示 “Hello World”。创建一个 web-app 目录并使它成为当前目录。进入 web-app 应用目录并编辑一个名为 main.go 的文件。

root@demohost:~# mkdir web-app

root@demohost:~# cd web-app/

root@demohost:~/web-app# vim.tiny main.go

package main

import (

"fmt"

"net/http"

)

func handler(w http.ResponseWriter, r *http.Request) {

fmt.Fprintf(w, "Hello %s", r.URL.Path[1:])

}


func main() {

http.HandleFunc("/World", handler)

http.ListenAndServe(":8080", nil)

}

使用下面的命令运行上面的 “Hello World” Go 程序。在浏览器中输入 http://127.0.0.1:8080/World 测试,你会在浏览器中看到 “Hello World”。

root@demohost:~/web-app# PORT=8080 go run main.go

下一步是将上面的应用在 docker 中容器化。因此我们会创建一个 dockerfile 文件,它会告诉 docker 如何容器化我们的 web 应用。

root@demohost:~/web-app# vim.tiny Dockerfile

# 得到最新的 golang docker 镜像

FROM golang:latest

# 在容器内部创建一个目录来存储我们的 web 应用,接着使它成为工作目录。

RUN mkdir -p /go/src/web-app

WORKDIR /go/src/web-app

# 复制 web-app 目录到容器中

COPY . /go/src/web-app #

下载并安装第三方依赖到容器中

RUN go-wrapper download RUN go-wrapper install

# 设置 PORT 环境变量

ENV PORT 8080

# 给主机暴露 8080 端口,这样外部网络可以访问你的应用

EXPOSE 8080

# 告诉 Docker 启动容器运行的命令

CMD ["go-wrapper""run"]
构建/运行容器

使用下面的命令构建你的 Go web-app,你会在成功构建后获得确认。

root@demohost:~/web-app# docker build --rm -t web-app .

Sending build context to Docker daemon 3.584 kB

Step 1 : FROM golang:latest

latest: Pulling from library/golang

386a066cd84a: Already exists

75ea84187083: Pull complete

88b459c9f665: Pull complete

a31e17eb9485: Pull complete

1b272d7ab8a4: Pull complete

eca636a985c1: Pull complete

08158782d330: Pull complete

Digest: sha256:02718aef869a8b00d4a36883c82782b47fc01e774d0ac1afd434934d8ccfee8c

Status: Downloaded newer image for golang:latest

---> 9752d71739d2

Step 2 : RUN mkdir -p /go/src/web-app

---> Running in 9aef92fff9e8

---> 49936ff4f50c

Removing intermediate container 9aef92fff9e8

Step 3 : WORKDIR /go/src/web-app

---> Running in 58440a93534c

---> 0703574296dd

Removing intermediate container 58440a93534c

Step 4 : COPY . /go/src/web-app

---> 82be55bc8e9f

Removing intermediate container cae309ac7757

Step 5 : RUN go-wrapper download

---> Running in 6168e4e96ab1

+ exec go get -v -d

---> 59664b190fee

Removing intermediate container 6168e4e96ab1

Step 6 : RUN go-wrapper install

---> Running in e56f093b6f03

+ exec go install -v

web-app

---> 584cd410fdcd

Removing intermediate container e56f093b6f03

Step 7 : ENV PORT 8080

---> Running in 298e2a415819

---> c87fd2b43977

Removing intermediate container 298e2a415819

Step 8 : EXPOSE 8080

---> Running in 4f639a3790a7

---> 291167229d6f

Removing intermediate container 4f639a3790a7

Step 9 : CMD go-wrapper run

---> Running in 6cb6bc28e406

---> b32ca91bdfe0

Removing intermediate container 6cb6bc28e406

Successfully built b32ca91bdfe0

现在可以运行我们的 web-app 了,可以执行下面的命令。

root@demohost:~/web-app# docker run -p 8080:8080 --name="test" -d web-app 7644606b9af28a3ef1befd926f216f3058f500ffad44522c1d4756c576cfa85b

进入 http://localhost:8080/World 浏览你的 web 应用。你已经成功容器化了一个可重复的/确定性的 Go web 应用。使用下面的命令来启动、停止并检查容器的状态。

###列出所有容器

root@demohost:~/ docker ps -a

###使用 id 启动容器

root@demohost:~/ docker start CONTAINER_ID_OF_WEB_APP

###使用 id 停止容器

root@demohost:~/ docker stop CONTAINER_ID_OF_WEB_APP
重新构建镜像

假设你正在开发 web 应用程序并在更改代码。现在要在更新代码后查看结果,你需要重新生成 docker 镜像、停止旧镜像并运行新镜像,并且每次更改代码时都要这样做。为了使这个过程自动化,我们将使用 docker 卷在主机和容器之间共享一个目录。这意味着你不必为在容器内进行更改而重新构建镜像。容器如何检测你是否对 web 程序的源码进行了更改?答案是有一个名为 “Gin” 的好工具 https://github.com/codegangsta/gin,它能检测是否对源码进行了任何更改,然后重建镜像/二进制文件并在容器内运行更新过代码的进程。

要使这个过程自动化,我们将编辑 Dockerfile 并安装 Gin 将其作为入口命令来执行。我们将开放 3030 端口(Gin 代理),而不是 8080。 Gin 代理将转发流量到 web 程序的 8080 端口。

root@demohost:~/web-app# vim.tiny Dockerfile

# 得到最新的 golang docker 镜像

FROM golang:latest

# 在容器内部创建一个目录来存储我们的 web 应用,接着使它称为工作目录。

RUN mkdir -p /go/src/web-app

WORKDIR /go/src/web-app

# 复制 web 程序到容器中

COPY . /go/src/web-app

# 下载并安装第三方依赖到容器中

RUN go get github.com/codegangsta/gin

RUN go-wrapper download

RUN go-wrapper install

# 设置 PORT 环境变量

ENV PORT 8080

# 给主机暴露 8080 端口,这样外部网络可以访问你的应用

EXPOSE 3030

# 启动容器时运行

Gin CMD gin run

# 告诉 Docker 启动容器运行的命令

CMD ["go-wrapper""run"]

现在构建镜像并启动容器:

root@demohost:~/web-app# docker build --rm -t web-app .

我们会在当前 web 程序的根目录下运行 docker,并通过暴露的 3030 端口链接 CWD (当前工作目录)到容器中的应用目录下。

root@demohost:~/web-app# docker run -p 3030:3030 -v `pwd`:/go/src/web-app --name="test" -d web-app

打开 http://localhost:3030/World, 你就能看到你的 web 程序了。现在如果你改变了任何代码,会在浏览器刷新后反映在你的浏览器中。

总结

就是这样,我们的 Go web 应用已经运行在 Ubuntu 16.04 Docker 容器中运行了!你可以通过使用 Go 框架来快速开发 API、网络应用和后端服务,从而扩展当前的网络应用。

本文来源:www.lxlinux.net/7154.html,若引用不当,请联系修改。

相关文章 8

1

阿里云换ip教程(云手机换IP地址) 51秒前

目录:1、云服务器怎么换ip2、阿里云服务器ip地址怎么更换,需要备案吗?3、阿里云更换公网ip4、求教!租用阿里云的服务器,能否用网上...

2

Mysql对误删的数据进行恢复 2分钟前

在日常运维工作中,对于mysql数据库的权限的规避,SQL审核优化、数据备份恢复就变成了,工作必备技能;数据库对于网站的重要性使得我们...

3

Linux系统open命令详解 3分钟前

在Linux系统中open命令一般用于打开文件,下面良许教程网为大家详细讲解一下Linux系统中open命令的具体使用方法。 open命令用于打开文件,使...

4

网址状态码(页面状态码) 5分钟前

目录:1、301、404、500、200、304等HTTP状态,代表什么意思?2、HTTP 状态码都有哪些3、详解HTTP状态码301和3024、HTTP 状态码表示什么意思?301、...

5

zkeys当面付(zkeys易支付) 6分钟前

目录:...

6

Linux下创建pycharm快捷方式 7分钟前

在Linux下启动pychar是非常麻烦的,如果使用快捷方式的方法去启动pychar会非常简便,p对于ycharm的快捷方式的创建非常简单,下面为大家分享...

7

Linux配置yum 9分钟前

Linux如何配置yum?YUM(yellowdog updater modified)是一个RPM系统的自动更新和软件包安装/卸载器。它可以自动计算依赖和找出想要安装的软件包,...

8

韩国vps干式真空泵(韩国VPS半导体真空泵) 11分钟前

目录:1、哪家的干式螺杆真空泵质量好?2、干式螺杆真空泵国内哪家销量高、质量好?3、国产的干式螺杆真空泵的质量怎样啊4、干式螺杆真...