Docker-compose:合并/组合两个容器

7 docker docker-compose

我正在尝试为我的项目创建一个docker环境。让我解释。

我有一个名为my-project“引发战争”的项目my-project.war。我创建了一个名为的 Docker 映像my-project:latest,其中包含目录my-project.war中的/my-project。那很简单。

现在我想将 Docker 映像my-project:latesttomcat:latest(这是 Tomcat 的官方 Docker 映像)合并到docker-compose.yml. 我从这个开始docker-compose.yml

version: "3"
services:
  my-project:
    image: my-project:latest
  tomcat:
    image: tomcat:latest
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)

但是现在如何将文件/my-project/my-project.warmy-project容器复制到webapps/容器中的目录tomcat呢?这在 docker-compose 中可能吗?还是我应该从一个新的开始Dockerfile

换句话说,我在组合这两个容器时遇到了麻烦。

yam*_*enk 7

你不能在 docker-compose 中这样做。但是,您可以使用 docker 中一个非常好的功能,称为MultiStage Build

基本上,创建一个新的 Dockerfile 将图像合并为一个:

FROM my-project:latest as project

FROM tomcat:latest
COPY --from=project /my-project/my-project.war /webapps
Run Code Online (Sandbox Code Playgroud)

一旦你使用构建这个镜像,docker build -t app .你将拥有一个 tomcat 镜像,其中包含你在“/webapps”的战争。

在 docker-compose 中只需使用这个图像:

version: "3"
services:
  application:
    image: app
    ports:
      - 8080:8080
Run Code Online (Sandbox Code Playgroud)