Go-HelloWord
go入门
docker打包构建部署
创建一个项目目录和两个文件,结构如下
1
2
3go-hello
|-hello.go
|-Dockerfile文件内容分别如下
hello.go
文件内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18package main
import (
"fmt"
"log"
"net/http"
)
func hello(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello World")
}
func main() {
http.HandleFunc("/", hello)
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal(err)
}
}Dockerfile
文件内容:1
2
3
4
5
6
7
8
9
10FROM golang:1.21.3-alpine AS builder
WORKDIR /build
ADD . /build
RUN go build -o hello ./hello.go
FROM alpine
WORKDIR /build
COPY --from=builder /build/hello /build/hello
EXPOSE 8080
CMD ["./hello"]在项目跟目录(
go-hello
),执行docker build -t hello:latest .
进行镜像打包运行镜像
docker run -p 8080:8080 hello:latest
然后访问http://127.0.0.1:8080/
手动测试
- 在项目跟目录执行
go build -o hello ./hello.go
生成hello
可执行文件 - 执行
./hello
,然后访问http://127.0.0.1:8080/
导入github包
在项目跟目录执行
go mod init go-hello
,会生成一个go.mod
和go.sum
的文件,文件内容如下:go.mod
1
2
3
4module qiniu_go
go 1.21.3
require github.com/qiniu/go-sdk/v7 v7.19.0
require golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirectgo.sum
1
2
3github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
.....在项目跟目录执行
go mod tidy
,删除错误或者不使用的modules
实战
写一个接口将接口的json数据保存到七牛云,支持修改
main.go
,dockerfile根据hello的例子进行修改即可
1 | package main |