Zer*_*our 2 development-environment go docker
基本上标题是什么......是否有最佳实践或有效的方法来开发将被Docker化的Golang应用程序?我知道你可以安装卷来指向你的源代码,它适用于像PHP这样你不需要编译代码的语言.但是对于Go来说,与Docker一起开发似乎很痛苦,因为我猜你几乎只有两个选项.
首先是有一个只是onbuild的Dockerfile,所以它在运行容器时启动go app,因此必须在每次更改时构建一个新图像(无论它是否小).或者,您将源代码目录挂载到容器目录,然后附加到容器本身并执行手动构建/运行,就像您通常一样.
这两种方式实际上是我看到它发生的唯一方式,除非你不在Docker容器中开发你的Go应用程序.只需像往常一样开发它,然后使用临时图像方法,在此之前预先构建Go进入二进制文件,然后在准备好运行它时将其复制到容器中.我认为这可能是要走的路,但我想问更多专业人士关于这个问题,并且可能会就这个主题得到一些反馈.
不确定这是最好的实践,但这是我的方式.
CGO_ENABLED=0 GOGC=off go build -ldflags -s -w)FROM scratch构建一个release容器(复制bin + entrypoint)步骤3到6是CI的任务.
重要提示:由于新的多阶段构建功能,这种情况正在发生变化:https://docs.docker.com/engine/userguide/eng-image/multistage-build/,不再需要构建版本与版本容器.
构建容器和发布容器将合并为一个多级构建,因此一个Dockerfile(不确定正确的语法,但是,你会得到这个想法):
FROM golang:latest as build
WORKDIR /go/src/myrepos/myproject
RUN go build -o mybin
FROM scratch
COPY --from=build /go/src/myrepos/myproject/mybin /usr/local/bin/mybin
ENTRYPOINT [ "/usr/local/bin/mybin" ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |