1、创建工程文件夹goweb。
2、创建dockerfile文件命名为“Dockerfile",文件内容如下:
# 使用alpine开启
FROM alpine
LABEL maintainer="zhi@zhizhicloud.com"
# 拷贝编译程序
COPY . /app
WORKDIR /app
# 打开8080端口
EXPOSE 8080
# 运行!
CMD ["./main"]
3、创建一个template文件夹,在文件夹下创建命名为index.html,文件中填写如下代码:
<h1>欢迎使用docker</h1>
<p>这个一个go web docker程序</p>
4、使用go程序编写一个web服务
package main
import (
"fmt"
"html/template"
"log"
"net/http"
)
func IndexHandler(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("templates/index.html")
if err != nil {
log.Println(err)
}
err = t.Execute(w,nil)
if err != nil {
log.Println(err)
}
}
func main() {
http.HandleFunc("/",IndexHandler)
fmt.Println("服务端口:8000") //控制台输出信息
err := http.ListenAndServe(":8000", nil) //设置监听的端口
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
5、编译程序、创建镜像、运行服务
windows下跨平台编译linux文件需要设置以下变量:
set GOARCH=amd64
set GOOS=linux
go build -o main
$ sudo start docker #开启docker服务
$ sudo docker build -t webserver -f Dockerfile .
$ sudo docker run webserver
$ sudo docker build -t webserver -f Dockerfile .
$ sudo docker run -p 8080:8000 webserver
服务端口: 8080 (注:程序原8000端口被转为8080端口)
成功开启docker容器的 go web服务

6、使用docker-compose安装服务
docker-compose.yml文件内容如下:
version: "3.5"
services:
webserver:
image: "webserver"
ports:
- target: 8000
published: 8080
启动docker-compose:
$ sudo docker-compose up &
网友评论