基于scratch的iris容器示例

EasyNetCN · · 978 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

本示例基于golang iris的Hello World,静态编译,基于空白镜像scratch,解决了时区问题

创建一个webserver项目

go mod init webserver

main.go

package main

import (
    "time"

    "github.com/kataras/iris/v12"
    "github.com/kataras/iris/v12/mvc"

    "github.com/kataras/iris/v12/middleware/logger"
    "github.com/kataras/iris/v12/middleware/recover"
)

func newApp() *iris.Application {
    app := iris.New()

    app.Use(recover.New())
    app.Use(logger.New())

    mvc.New(app).Handle(new(ExampleController))

    return app
}

func main() {
    app := newApp()

    app.Listen(":8080")
}

type ExampleController struct{}

func (c *ExampleController) Get() mvc.Result {
    return mvc.Response{
        ContentType: "text/html",
        Text:        "当前时间:" + time.Now().Format("2006-01-02 15:04:05"),
    }
}

func (c *ExampleController) GetPing() string {
    return "pong"
}

func (c *ExampleController) GetHello() interface{} {
    return map[string]string{"message": "Hello Iris!"}
}

func (c *ExampleController) BeforeActivation(b mvc.BeforeActivation) {
    anyMiddlewareHere := func(ctx iris.Context) {
        ctx.Application().Logger().Warnf("Inside /custom_path")
        ctx.Next()
    }
    b.Handle("GET", "/custom_path", "CustomHandlerWithoutFollowingTheNamingGuide", anyMiddlewareHere)
}

func (c *ExampleController) CustomHandlerWithoutFollowingTheNamingGuide() string {
    return "hello from the custom handler without following the naming guide"
}

构建

GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags -s -a -installsuffix cgo main.go 

Dockerfile

FROM scratch

ENV TZ=Asia/Shanghai

ADD zoneinfo.tar.gz /

COPY main /

EXPOSE 8080

CMD ["/main"]

打包本地时区

tar -chzf zoneinfo.tar.gz /usr/share/zoneinfo

构建镜像

docker build -t webserver ./webserver 

运行容器

docker run --name webserver -p 8080:8080  -d webserver     

有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:EasyNetCN

查看原文:基于scratch的iris容器示例

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

978 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传