Dockerfile 搭建
目录结构
--Dockerfile--main.go
- 写一个go的helloworld
package mainimport ( "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"))}
- 写Dockerfile
# 第一行必须指定基于的基础镜像, alpineFROM golang:alpine# MAINTAINER docker_user docker_user@email.com# 镜像的操作指令RUN mkdir /appADD . /app/WORKDIR /appRUN go build -o main .# 容器启动时执行指令CMD ["./main"]
- 在创建的目录内, 运行
docker build -t webtest .
.
-t 指定编译镜像名
-
运行镜像
docker run -d -p 9090:8080 webtest
-
访问
localhost:9090/
编译后再打包成Docker
目录为
--bin---- main--cmd---- build.sh--config----config.toml--Dockerfile--main.go
在cmd中执行build.sh
#!/bin/bashecho "begin..."# 编译程序为二进制文件GOOS=linux go build -ldflags "-w" -o ../bin/main ../main.go# docker 部分docker build -t dse:0.0.1 ../.# tardocker save -o ../bin/dse.tar dse:0.0.1echo "end"
Dockerfile 文件
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"]