golang(6):使用beego + ace admin 开发后台系统 CRUD,并且使用scratch构建镜像

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/79884722

1,关于golang admin


ace admin 是一个非常好的后台系统ui。
golang是我非常喜欢的一个语言。
并且写了一个admin系统。
写了个博客:
https://blog.csdn.net/freewebsys/article/details/68955060
之前有哥们抱怨说没有看见代码。
我又重新整理了下。
是代码没有上传完整。
现在已经整理完整了,并且build 成镜像,上传到hub上面了。

github:
https://github.com/golangpkg/go-admin
docker hub:
https://hub.docker.com/r/golangpkg/go-admin/

使用scratch 空镜像打包,20MB+

2,代码说明


详细的之前也写过了。不重复了:
https://blog.csdn.net/freewebsys/article/details/68955060
下载镜像:

docker push docker.io/golangpkg/go-admin:latest
docker run --rm -it -p 8080:8080 docker.io/golangpkg/go-admin

效果:
golang(6):使用beego + ace admin 开发后台系统 CRUD,并且使用scratch构建镜像_第1张图片

3,遇到构建问题


因为是用的scratch 在编译golang 之后发现 错误:

standard_init_linux.go:190: exec user process caused "no such file or directory"

巨崩溃,因为就报了这一个错误,没有其他的。
发现是因为在编译golang 的时候要加上好多参数。

env GOOS=linux GOARCH=amd64 CGO_ENABLED=1
go build -ldflags "-linkmode external -extldflags -static" -o go-admin main.go

还是参考rancher学习的。
https://github.com/rancher/docker-from-scratch/blob/master/scripts/build

在构建中使用 golang:stretch 基础镜像编译,然后在把文件拷贝出来。
放到 scratch 镜像当中运行。
scratch 镜像是空镜像,使用 exec 进入不去。也不需要。

在编译 sqlite 数据库驱动的时候报错:

vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go:18:10: undefined: SQLiteConn

发现是因为这个类是使用 cgo 调用的lib库,必须要libsqlite3-dev 开发包。
安装上编译报警告:

/go/src/github.com/freewebsys/go-admin/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c:35900: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/tmp/go-link-879145469/000003.o: In function `mygetgrouplist':
/tmp/workdir/go/src/os/user/getgrouplist_unix.go:15: warning: Using 'getgrouplist' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

不知道啥都打包进去了成了 20mb大小,要是没有sqlite 也就 10mb。

在push 到docker hub 上还遇到权限问题。
发现要加url 的全地址:

docker login -u golangpkg docker.io
docker push docker.io/golangpkg/go-admin:latest

golangpkg 是我申请的账号。

4,总结


在构建一个镜像的,只把编译好的文件拷贝上去。
然后把 conf views static 文件都拷贝上去就可以跑 beego了。
并且跑通了,构建,打docker镜像。
非常不错,资源小很多,下次要使用go-admin系统开发个报表工具。
统计工具啥的。超级快。开发快,启动快运行快。

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/79884722

你可能感兴趣的:(docker,golang)