编写web测试程序
cat > hello-world.go << EOF
package main
import (
"fmt"
"net/http"
"os"
)
func main() {
http.HandleFunc("/", HelloServer)
fmt.Printf("http://0.0.0.0:8080\n")
http.ListenAndServe(":8080", nil)
}
func HelloServer(w http.ResponseWriter, r *http.Request) {
name, err := os.Hostname()
if err != nil {
name="获取主机名失败"
}
fmt.Fprintf(w, "Hello, %s!", name)
}
EOF
编译
env GOOS=linux go build -o hello-world hello-world.go
chmod +x hello-world
创建Dockerfile
cat > Dockerfile << EOF
FROM alpine
LABEL maintainer="zaza <260458726@qq.com>"
ENV HTTP_VERSION 1.0.0
COPY hello-world /root/
expose 8080
CMD ["/root/hello-world"]
EOF
打镜像
docker build -t zazayaya/hello-world-go:latest .
docker build -t zazayaya/hello-world-go:1.0.0 .
测试镜像
# 运行
docker run --name hello-world-go -d -p 0.0.0.0:8080:8080 zaza-test/hello-world-go:1.0.0
# 查看
docker ps | grep hello-world-go
# 访问
curl http://localhost:8080
# 删除测试数据
docker stop hello-world-go && docker rm hello-world-go
推送镜像到dockerhub
# 输入用户密码进行登陆
docker login
# 推送镜像
docker push zazayaya/hello-world-go:latest
docker push zazayaya/hello-world-go:1.0.0
测试远程镜像
# 删除本地镜像
docker rmi zazayaya/hello-world-go:1.0.0
# 远程拉取
docker run --name hello-world-go -d -p 0.0.0.0:8080:8080 zazayaya/hello-world-go
# 测试后删除测试数据
docker stop hello-world-go && docker rm hello-world-go
# 远程拉取指定版本
docker run --name hello-world-go -d -p 0.0.0.0:8080:8080 zazayaya/hello-world-go:1.0.0
# 测试后删除测试数据
docker stop hello-world-go && docker rm hello-world-go