我正在尝试为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应用程序二进制文件复制到容器中,这是问题所在,将编译后的二进制文件放在哪里?目前,它已放入项目文件夹。
您可以指定输出目录和文件名wit go build -o
标志。例如:
go build ./cmd/git-tagger -o ./build/package/foo
然后编辑您的Dockerfile:
使用COPY或ADD加载二进制文件
PS,您./build/ci/Dockerfile
在配置中指定了Dockerfile路径。但是它在package
屏幕截图的目录中。
不要忘记,您链接的存储库只是smb的个人观点,Go并没有真正将您强制为任何结构,这取决于您的公司风格标准或偏好。因此,将二进制文件放在何处并不是非常重要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句