目录结构
--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 指定编译镜像名
docker run -d -p 9090:8080 webtest
localhost:9090/
目录为
--bin
---- main
--cmd
---- build.sh
--config
----config.toml
--Dockerfile
--main.go
在cmd中执行build.sh
#!/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 文件
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"]