新建一个go项目,确保电脑已经装好了docker
编写两个文件main.go
和Dockerfile
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/", betterHanlder)
server := &http.Server{
Addr: ":8900",
}
fmt.Println("服务启动....")
if err := server.ListenAndServe(); err != nil {
fmt.Printf("服务启动失败, err:%v\n", err)
}
}
func betterHanlder(w http.ResponseWriter, _ *http.Request) {
w.Write([]byte("明天会更好"))
}
FROM golang:alpine AS builder
# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
CGO_ENABLED=0 \
GOOS=linux \
GOARCH=amd64
# 移动到工作目录:/build
WORKDIR /build
# 复制项目中的 go.mod 和 go.sum文件并下载依赖信息
#COPY go.mod .
#COPY go.sum .
#RUN go mod download
# 将代码复制到容器中
COPY . .
# 将我们的代码编译成二进制可执行文件 app
RUN go build -o app .
# 声明服务端口
EXPOSE 8900
# 启动容器时运行的命令
CMD ["/build/app"]
终端运行命令如下
docker build . -t goweb_deployment
一共有七步,等待加载完成,然后输入指令
docker run -p 8900:8900 goweb_deployment
可以看到服务启动,访问浏览器,可以看到如下画面