TencentOS 4 Golang runtime
10K+
本镜像基于 tencentos/tencentos4-microdnf 构建。TencentOS 4 microdnf 镜像使用轻量级包管理工具 microdnf,支持软件的安装、卸载和更新,命令与 dnf 基本一致。与 dnf 相比,microdnf 不支持 search 搜索包、deplist 查询依赖、插件扩展、历史记录和事务回滚等高级功能 。
注意: /go 目录全局可写,以便灵活指定容器内运行用户(例如通过 --user 1000:1000 启动容器后,执行 go get 仍可成功)。虽然 777 权限在常规主机环境存在风险,但容器内通常无其他进程或用户,因此等效于 700,同时保留了 --user 的灵活性。
最简单的方式是把 Go 容器同时当作构建与运行时环境。在 Dockerfile 中可按如下方式编写(项目需使用 go.mod 管理依赖):
FROM zjy2414/tencentos4-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/tencentos4-golang:latest go build -v
这样会把可执行文件输出到当前目录。如果项目包含 Makefile,也可以:
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp zjy2414/tencentos4-golang:latest make
如需为其他平台(如 windows/386)编译:
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp \
-e GOOS=windows -e GOARCH=386 zjy2414/tencentos4-golang:latest go build -v
一次性构建多平台可进入容器通过命令行循环语句实现:
$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp zjy2414/tencentos4-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
Content type
Image
Digest
sha256:aa3895d02…
Size
185.9 MB
Last updated
9 months ago
docker pull zjy2414/tencentos4-golang