首先我要说的是,我知道这个项目结构可能并不理想,但这是上级想要的,所以我无法改变这一点。
我在一个存储库中有多个 Java 项目,我想将它们容器化到一个容器中:
- main
- project1
- project2
- Dockerfile
我对此没有异议;我的问题是我需要来自(公共)GitHub 存储库的其他一些代码才能在我的项目容器中的自己的容器中运行。
- main-container
- project1
- project2
- git-repo-container
我可以克隆存储库并将其放入容器中而不会出现问题(假设 git
已在之前的 RUN
命令中安装):
RUN git clone --progress --verbose https://github.com/user/repo.git
现在,我完全不知道如何构建和运行存储库的 Dockerfile
中指定的容器。
当然,我转向docker-compose
:
version: "3.9"
services:
my-image:
build: .
image: my-image
ports:
- 8080
- 8100
repo-image:
build: .
image: repo-image
ports:
- 8000
我是 docker-compose
的新手,所以这对我来说似乎有点混乱,但我知道我可以直接从 GitHub 构建图像。我只是不确定如何指定存储库的 Dockerfile
,因为我在构建阶段拉入了存储库(并且希望避免在容器中安装 docker 以在该容器中运行 docker build ...
)。
我应该补充一点,我不能仅仅将 repo 的源代码添加到此代码库中(不是我的决定),因此在构建阶段引入 repo 似乎是我唯一的选择。
作为一个附带问题,如果允许,当我在开发容器中打开项目时,VS 代码是否有理由不显示 repo 文件夹?
答案 0 :(得分:1)
Docker 支持从直接 github URL 构建,请参阅 this。
<块引用>docker build [选项] 路径 |网址 | -
所以,对你来说,在翻译到撰写之后,正确的方法是:
docker-compose.yaml:
version: "3"
services:
my-image:
build: .
image: my-image
ports:
- 8080
- 8100
repo-image:
build: https://github.com/user/repo.git
image: repo-image
ports:
- 8000
以上将基于第三方代码构建镜像。