编译后的 Go 二进制文件放在哪里?
Where to put the compiled Go binary?
我正在尝试为 Go 应用程序构建我的第一个 Dockerfile 并使用 DroneCI 构建管道。
DroneCI 配置如下:
kind: pipeline
type: docker
name: Build auto git tagger
steps:
- name: test and build
image: golang
commands:
- go mod download
- go test ./test
- go build ./cmd/git-tagger
- name: Build docker image
image: plugins/docker
pull: if-not-exists
settings:
username:
password:
repo:
dockerfile: ./build/ci/Dockerfile
registry:
auto_tag: true
trigger:
branch:
- master
我遵循了 https://github.com/golang-standards/project-layout 的结构约定:
到目前为止,Dockerfile 如下所示:
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
下一步是将GO应用程序二进制文件复制到容器中,问题来了,编译后的二进制文件放在哪里?目前,它放入项目文件夹中。
您可以使用 go build -o
标志指定输出目录和文件名。例如:
go build ./cmd/git-tagger -o ./build/package/foo
然后编辑您的 Dockerfile:
加载你用 COPY or ADD
得到的二进制文件
用ENTRYPOINT or CMD
执行
P.S 您在配置中将 Dockerfile 路径指定为 ./build/ci/Dockerfile
。但它在屏幕截图的 package
目录中。
不要忘记您链接的存储库只是 smb 的个人意见,Go 并没有真正强制您使用任何结构,这取决于您的公司风格标准或您的喜好。所以把二进制文件放在哪里并不是特别重要。
我正在尝试为 Go 应用程序构建我的第一个 Dockerfile 并使用 DroneCI 构建管道。
DroneCI 配置如下:
kind: pipeline
type: docker
name: Build auto git tagger
steps:
- name: test and build
image: golang
commands:
- go mod download
- go test ./test
- go build ./cmd/git-tagger
- name: Build docker image
image: plugins/docker
pull: if-not-exists
settings:
username:
password:
repo:
dockerfile: ./build/ci/Dockerfile
registry:
auto_tag: true
trigger:
branch:
- master
我遵循了 https://github.com/golang-standards/project-layout 的结构约定:
到目前为止,Dockerfile 如下所示:
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
下一步是将GO应用程序二进制文件复制到容器中,问题来了,编译后的二进制文件放在哪里?目前,它放入项目文件夹中。
您可以使用 go build -o
标志指定输出目录和文件名。例如:
go build ./cmd/git-tagger -o ./build/package/foo
然后编辑您的 Dockerfile:
加载你用 COPY or ADD
得到的二进制文件
用ENTRYPOINT or CMD
执行
P.S 您在配置中将 Dockerfile 路径指定为 ./build/ci/Dockerfile
。但它在屏幕截图的 package
目录中。
不要忘记您链接的存储库只是 smb 的个人意见,Go 并没有真正强制您使用任何结构,这取决于您的公司风格标准或您的喜好。所以把二进制文件放在哪里并不是特别重要。