目錄結構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"]