现在我有一个用 golang 编写的程序,我试图在一个最小的容器中运行。这个go程序启动的时候正好启动了另外一个java写的子程序,这个子程序也需要运行在容器中。我想知道如何构建我的 Dockerfile 以将其作为“distroless”图像来实现。
现在我正在探索这样的解决方案:
FROM <golang-distro> as go-builder
FROM <java-distro> as java-builder
FROM <minimal-base-image>
# copy over all files needed to set up golang runtime to run go-parent-service
COPY --from=go-builder /<golang-binaries> /
# copy over all files needed to set up java runtime so go-parent-service can run its java sub process
COPY --from-java-builder /<jvm-binaries> /
# executable for the golang service
COPY /go-parent-service /
# run the golang service, which will also start up the java service as sub process
CMD ["/go-parent-service"]
这种方法是否有意义,或者是否有更好的方法来构建此图像?我知道启动 java 服务的 go 服务使事情变得有点棘手,并且可能不是最佳实践。然而,由于我不拥有这个可执行文件,我无法分离出这些服务并在不同的容器中运行它们。
RISEBY
相关分类