zjy2414/tencentos3-golang

By zjy2414

Updated 9 months ago

TencentOS 3 Golang runtime

Image
Languages & frameworks
0

10K+

zjy2414/tencentos3-golang repository overview

本镜像基于 tencentos/tencentos3-microdnf 构建。TencentOS 3 microdnf 镜像使用轻量级包管理工具 microdnf,支持软件的安装、卸载和更新,命令与 dnf 基本一致。与 dnf 相比,microdnf 不支持 search 搜索包、deplist 查询依赖、插件扩展、历史记录和事务回滚等高级功能 。

注意: /go 目录全局可写,以便灵活指定容器内运行用户(例如通过 --user 1000:1000 启动容器后,执行 go get 仍可成功)。虽然 777 权限在常规主机环境存在风险,但容器内通常无其他进程或用户,因此等效于 700,同时保留了 --user 的灵活性。

在应用中使用 Go 容器

最简单的方式是把 Go 容器同时当作构建与运行时环境。在 Dockerfile 中可按如下方式编写(项目需使用 go.mod 管理依赖):

FROM zjy2414/tencentos3-golang:latest

WORKDIR /usr/src/app

# 先复制 go.mod/go.sum,利用缓存提前下载依赖;仅当依赖变动时才重新下载
COPY go.mod go.sum ./
RUN go mod download

# 复制源码并编译
COPY . .
RUN go build -v -o /usr/local/bin/app ./...

CMD ["app"]

构建并运行:

$ docker build -t my-golang-app .
$ docker run -it --rm --name my-running-app my-golang-app

仅编译而不运行

若只需在容器内编译,无需运行,可挂载当前目录到容器并执行构建:

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp zjy2414/tencentos3-golang:latest go build -v

这样会把可执行文件输出到当前目录。如果项目包含 Makefile,也可以:

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp zjy2414/tencentos3-golang:latest make

交叉编译示例

如需为其他平台(如 windows/386)编译:

$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp \
  -e GOOS=windows -e GOARCH=386 zjy2414/tencentos3-golang:latest go build -v

一次性构建多平台可进入容器通过命令行循环语句实现:

$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp zjy2414/tencentos3-golang:latest bash
$ for GOOS in darwin linux; do
>   for GOARCH in 386 amd64; do
>     export GOOS GOARCH
>     go build -v -o myapp-$GOOS-$GOARCH
>   done
> done

Tag summary

Content type

Image

Digest

sha256:e92716215

Size

172.6 MB

Last updated

9 months ago

docker pull zjy2414/tencentos3-golang