go项目部署到腾讯云的docker上

因为我部署的是一个简单的Gin框架的web程序,所以确保腾讯云的端口是打开的,默认是不打开的,要通过腾讯云官网打开。

1 部署方式一

将go程序打包到腾讯云编译。

1.1 创建一个工程

helloDocker
├── Dockerfile
├── go.mod
├── go.sum
└── main.go

1.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/main

1.4 创建镜像

构建镜像,docker build . 别忘记加 . 代表当前目录

hello_docker是镜像名称,不可以有大写

docker build -t hello_docker . 

在这里插入图片描述
查看镜像:

docker image ls

启动镜像,启动后该镜像变成容器,-d是后台

docker run -d -p 8000:8000 hello_docker

访问

http://121.4.24.50:8000/hello

在这里插入图片描述

1 部署方式二

将go程序本地编译后上传。
首先在本地编译成Linux平台运行的可执行文件。这样的打包方式占用的文件是很小的

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go
helloGo
├── Dockerfile
└── main

1.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
在这里插入图片描述


版权声明:本文为taw19960426原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。