目录结构linux
--Dockerfile --main.go
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", hello) err := http.ListenAndServe(":8080", nil) //设置监听的端口 if err != nil { log.Fatal("ListenAndServe: ", err) } } func hello(w http.ResponseWriter, r *http.Request) { fmt.Println(r.Method) //GET w.Write([]byte("hello world")) }
# 第一行必须指定基于的基础镜像, alpine FROM golang:alpine # MAINTAINER docker_user docker_user@email.com # 镜像的操做指令 RUN mkdir /app ADD . /app/ WORKDIR /app RUN go build -o main . # 容器启动时执行指令 CMD ["./main"]
docker build -t webtest .
.-t 指定编译镜像名golang
运行镜像 docker run -d -p 9090:8080 webtest
web
访问 localhost:9090/
docker
目录为bash
--bin ---- main --cmd ---- build.sh --config ----config.toml --Dockerfile --main.go
在cmd中执行build.shapp
#!/bin/bash echo "begin..." # 编译程序为二进制文件 GOOS=linux go build -ldflags "-w" -o ../bin/main ../main.go # docker 部分 docker build -t dse:0.0.1 ../. # tar docker save -o ../bin/dse.tar dse:0.0.1 echo "end"
Dockerfile 文件ui
FROM golang:alpine # 建立目录 RUN mkdir -p /app/config # 建立工做空间 WORKDIR /app # 复制二进制文件到工做目录 ADD bin/main /app/ # 复制配置文件到工做目录 ADD config/config.toml /app/config/config.toml # 启动程序 CMD ["/app/main"]