因为我部署的是一个简单的Gin框架的web程序,所以确保腾讯云的端口是打开的,默认是不打开的,要通过腾讯云官网打开。
1 部署方式一将go程序打包到腾讯云编译。
1.1 创建一个工程helloDocker ├── Dockerfile ├── go.mod ├── go.sum └── main.go1.2 创建main.go
main.go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
// 1.创建路由
r := gin.Default()
// 2.绑定路由规则,执行的函数
// gin.Context,封装了request和response
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{"msg": "hello docker!", "status": 200})
})
// 3.监听端口,默认在8080
// Run("里面不指定端口号默认为8080")
r.Run(":8000")
}
1.3 创建Dockerfile
Dockerfile
FROM golang:1.16.6-alpine #创建文件夹 RUN mkdir /app #将Dockerfile 中的文件存储到/app下 ADD . /app # 设置工作目录 WORKDIR /app ENV GO111MODULE=on ENV GOPROXY="https://goproxy.io" # 因为已经是在 /app下了,所以使用 ./ RUN go build -o main ./main.go # 暴露的端口 EXPOSE 8000 #设置容器的启动命令,CMD是设置容器的启动指令 CMD /app/main1.4 创建镜像
构建镜像,docker build . 别忘记加 . 代表当前目录
hello_docker是镜像名称,不可以有大写
docker build -t hello_docker .
查看镜像:
docker image ls
启动镜像,启动后该镜像变成容器,-d是后台
docker run -d -p 8000:8000 hello_docker
访问
1 部署方式二http://121.4.24.50:8000/hello
将go程序本地编译后上传。
首先在本地编译成Linux平台运行的可执行文件。这样的打包方式占用的文件是很小的
SET CGO_ENABLED=0 SET GOOS=linux SET GOARCH=amd64 go build main.go
helloGo ├── Dockerfile └── main1.1 创建Dockerfile
因为我是直接把可执行程序直接上传的,本身是没有可执行权限的,我们必须赋给权限
Dockerfile
# 表示依赖 alpine 最新版 FROM alpine:latest #创建文件夹 RUN mkdir /app #将Dockerfile 中的文件存储到/app下 ADD . /app # 设置工作目录 WORKDIR /app #设置时区为上海 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime RUN echo 'Asia/Shanghai' >/etc/timezone ENV GO111MODULE=on ENV GOPROXY="https://goproxy.io" #设置权限 RUN chmod -R 777 ./main # 设置编码 ENV LANG C.UTF-8 # 暴露的端口 EXPOSE 8000 # 运行golang程序的命令 ENTRYPOINT ["/app/main"]1.2 创建镜像
docker build -t hello_go . docker image ls docker run -p 8000:8000 hello_go
访问 http://121.4.24.50:8000/hello



