
jumpserver/golang维护者:
Docker社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux 或 Stack Overflow
(参见FAQ中的"'Shared'和'Simple'标签有什么区别?")
问题提交地址:
[***]
支持的架构:(更多信息)
amd64, arm64, loong64
本描述来源:
docs仓库的golang目录 (历史记录)
Go(又称Golang)是一种最初由Google开发的编程语言。它是一种静态类型语言,语法大致源自C,但增加了垃圾回收、类型安全、一些动态类型能力、额外的内置类型(如变长数组和键值映射)以及大型标准库等特性。
***.org/wiki/Go_(programming_language)
!logo
注意:/go目录是可全局写入的,以允许灵活指定运行容器的用户(例如,在使用--user 1000:1000启动的容器中,将go get github.com/example/...运行到默认$GOPATH中会成功)。虽然777权限目录在常规主机设置中可能不安全,但容器内通常没有其他进程或用户,因此这相当于Docker使用中的700权限,但允许--user灵活性。
使用此镜像最直接的方式是将Go容器同时用作构建和运行环境。在Dockerfile中,编写如下内容可以编译并运行项目(假设项目使用go.mod进行依赖管理):
dockerfileFROM jumpserver/golang:1.20 WORKDIR /usr/src/app # 预复制/缓存go.mod以预下载依赖,仅在后续构建中依赖变更时重新下载 COPY go.mod go.sum ./ RUN go mod download && go mod verify COPY . . RUN go build -v -o /usr/local/bin/app ./... CMD ["app"]
然后可以构建并运行Docker镜像:
bash$ docker build -t my-golang-app . $ docker run -it --rm --name my-running-app my-golang-app
有时可能不适合在容器内运行应用。要在Docker实例内编译而非运行应用,可以执行如下命令:
bash$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.20 go build -v
这会将当前目录作为卷添加到容器,将工作目录设置为该卷,并运行go build命令,该命令会编译工作目录中的项目并将可执行文件输出为myapp。或者,如果有Makefile,可以在容器内运行make命令:
bash$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.20 make
如果需要为非linux/amd64平台(如windows/386)编译应用:
bash$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 jumpserver/golang:1.20 go build -v
或者,可以一次为多个平台构建:
bash$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.20 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
jumpserver/golang镜像有多种版本,每种版本设计用于特定用例。
这是默认镜像。如果不确定需求,可能需要使用此版本。它设计为既可作为临时容器(挂载源代码并启动容器以运行应用),也可作为构建其他镜像的基础。
某些标签可能包含bookworm或bullseye等名称,这些是Debian发行版的代号,表示镜像基于哪个发行版。如果镜像需要安装除自带软件之外的其他包,可能需要明确指定这些代号,以减少Debian新版本发布时的中断。
查看此镜像中包含软件的许可证信息。
与所有Docker镜像一样,这些镜像可能还包含其他软件,这些软件可能采用其他许可证(如基础发行版中的Bash等,以及主要软件的任何直接或间接依赖)。
一些能够自动检测到的额外许可证信息可能位于repo-info仓库的golang目录中。
对于任何预构建镜像的使用,镜像用户有责任确保对该镜像的任何使用都符合其中包含的所有软件的相关许可证。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务