首先我要说的是,我知道这个项目结构可能不是最理想的,但这正是高层想要的,所以我不能改变它。
我有多个Java项目在一个仓库中,我想将它们容器化为单个容器:
- main
- project1
- project2
- Dockerfile
我对此没有任何问题;我的问题在于,我需要从一个(公共的)GitHub仓库中获取一些其他代码,并在我的项目容器内运行它们自己的容器。
- main-container
- project1
- project2
- git-repo-container
我可以克隆代码仓库并将其成功地放入容器中(假设在之前的RUN
命令中已安装了git
):
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构建镜像。 我只是不确定如何指定repo的Dockerfile
,因为我在构建阶段拉取repo(并且希望避免在容器中安装docker来运行docker build ...
)。我应该补充一点,我不能将repo的源代码添加到此代码库中(不是我的决定),因此在构建阶段拉取repo似乎是我的唯一选择。
作为一个小问题,如果允许的话,为什么VS code在我在dev容器中打开项目时不显示repo文件夹呢?
myrepo.git#mybranch
。如果仍有问题,请展示你的 Git 仓库。 - atlinemaster
重命名为main
,但是 Docker 告诉我它找不到master
分支,所以我会尝试在结尾加上#main
。 - Inkblot#main
后它可以工作,所以我猜这就是为那些使用main
分支而不是master
的代码库遵循的步骤,感谢您的帮助! - Inkblot