sisterofdc

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

go项目部署docker-alpine(2)使用DockerFile,创建镜像

首先是下载golang镜像
这里就不推荐下载那个版本了。
如果直接

docker pull golang

就是最新的版本,很大接近1G
dockerfile创建后就跑远了

所以非常推荐(1.19.5-alpine3.17)
就是alpine版本,小和安全

首先用goland创建一个简单的项目

使用gin框架创建一个http服务器。
gin是非常好学的一个框架

package main

import (
	"github.com/gin-contrib/cors"
	"github.com/gin-gonic/gin"
	"net/http"
	"time"
)

var LocalAddr = "0.0.0.0:8090"


func healthCheck(ctx *gin.Context) {
	ctx.JSON(http.StatusOK, gin.H{
		"health": "ok",
	})
}

func StartHttpServer() {
	var route = gin.New()

	mwCORS := cors.New(cors.Config{
		//准许跨域请求网站,多个使用,分开,限制使用*
		AllowOrigins: []string{"*"},
		//准许使用的请求方式
		AllowMethods: []string{"PUT", "PATCH", "POST", "GET", "DELETE"},
		//准许使用的请求表头
		AllowHeaders: []string{"Origin", "Authorization", "Content-Type"},
		//显示的请求表头
		ExposeHeaders: []string{"Content-Type"},
		//凭证共享,确定共享
		AllowCredentials: true,
		//容许跨域的原点网站,可以直接return true就万事大吉了
		AllowOriginFunc: func(origin string) bool {
			return true
		},
		//超时时间设定
		MaxAge: 24 * time.Hour,
	})
	gin.SetMode(gin.ReleaseMode)
	route.Use(mwCORS)
	route.GET("/health", healthCheck)
	s := &http.Server{
		Addr:           LocalAddr,
		Handler:        route,
		ReadTimeout:    10 * time.Second,
		WriteTimeout:   10 * time.Second,
		MaxHeaderBytes: 1 << 20,
	}
	err := s.ListenAndServe()
	if err != nil {
		return
	}
}

func main() {
	StartHttpServer()
}

然后在根目录下(就是项目开始的地方)创建DockerFile

来源于那个镜像

FROM golang:1.19.5-alpine3.16

WORKDIR /usr/src/app

#修改源
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY= https://goproxy.cn ,direct


#先拷贝项目依赖文件
COPY go.mod go.sum ./
RUN go mod download && go mod verify

#再拷贝项目文件
COPY . .
RUN go build ginServer.go



#打开端口
EXPOSE 8090

ENTRYPOINT ["./ginServer"]

在目录下
docker build .
如果build成功会回显build的ID值

docker image ls
(取名字全是小写,如果要分开是下划线)
docker tag ID name
如果在liunx中可以使用-d(在后台运行)
docker run -p 8090:8090 --name=name ID(tag)
然后就是打包镜像
完整路径不是相对路径
docker save ID -o E:\dockerfile\mygin.tar

然后上传到liunx主机上,xshell,xftp
pwd 查看当前路径
docker load -i /home/sisterofdc/mygin.tar
然后就是一层又一层的加载
重新tag,run

然后centos上打开端口(如果是测试环境,就直接关防火墙吧)

firewall-cmd --zone=public --add-port=8090/tcp --permanent
成功有回显
firewall-cmd --reload
最后连接

如果是docker yaml 文件
docker-compose up

posted on 2023-01-29 16:53  SistersOfDC  阅读(738)  评论(0)    收藏  举报