我正在尝试为我的项目创建一个 docker 环境。让我解释。
我有一个项目叫 my-project
引发 war my-project.war
.我创建了一个名为 my-project:latest
的 Docker 镜像其中包含 my-project.war
在 /my-project
目录。那很简单。
现在我想合并 Docker 镜像 my-project:latest
和 tomcat: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
但是我现在如何复制文件
/my-project/my-project.war
来自 my-project
容器到 webapps/
tomcat
中的目录容器?这在 docker-compose 中是可能的,还是应该从一个新的 Dockerfile
开始? ?换句话说,我在组合这两个容器时遇到了麻烦。
最佳答案
你不能在 docker-compose 中做到这一点。但是,您可以在 docker 中使用一个非常好的功能,名为 MultiStage Build
基本上,创建一个新的 Dockerfile 将图像合并为一个:
FROM my-project:latest as project
FROM tomcat:latest
COPY --from=project /my-project/my-project.war /webapps
使用
docker build -t app .
构建此镜像后你将在 `/webapps' 有一个包含你 war 的 tomcat 图像。在 docker-compose 中,只需使用此图像:
version: "3"
services:
application:
image: app
ports:
- 8080:8080
关于Docker-compose:合并/组合两个容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461999/