来自 Git 存储库的 Docker-Compose 构建镜像

时间:2021-03-02 23:25:30

标签: git docker docker-compose

首先我要说的是,我知道这个项目结构可能并不理想,但这是上级想要的,所以我无法改变这一点。

我在一个存储库中有多个 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 文件夹?

1 个答案:

答案 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

以上将基于第三方代码构建镜像。