我有一个Rust应用程序(由不同的作者编写),它索引了一些VCF文件。我写了一个Kotlin应用程序,它接受一些VCF文件路径,做一些修改并获取数据-它应该然后理想地调用前面提到的Rust应用程序。
我已经在本地实现了它,在那里我构建了Rust应用程序存储库,因此,我使用DefaultExecutor类从命令行运行Rust应用程序。我想将整个过程移动到Docker容器中。我对如何在容器中捕获Rust应用程序感到困惑。我应该为Kotlin应用程序Dockerfile使用RUN git clone.....
来获取代码吗(它是一个私有的repo)。我想知道是否有更好的方法来实现这一点,而不是将源代码拉入容器内。
另外,不确定是否有一种方法可以只在docker容器中获得Rust应用程序可执行文件。这将如何实现?
1条答案
按热度按时间bmp9r5qi1#
我认为你正在寻找的解决方案被称为多阶段构建。本质上,你会想要创建一个具有“阶段”的Dockerfile。每个阶段将专用于构建的不同部分。最后一个阶段将生成容器使用的映像。
你可能会从一个rust镜像开始,然后
git clone
你的rust应用,cargo install
,然后cargo build
它,然后进入构建Kotlin应用的阶段。一旦你进入构建Kotlin镜像的阶段,你就可以复制你构建的rust可执行文件。official rust image有一个这种用法的示例
如果你向下滚动一点,还有一个链接,指向关于多阶段构建的更多信息。https://docs.docker.com/develop/develop-images/multistage-build/