我有一个 Composer 文件:
version: '2'
services:
applic:
image: tomcat
ports:
- "8082:8080"
depends_on:
- rabbit_image
-packager
volumes:
- "/home/ustin/second_try/common_data:/home"
rabbit_image:
image: rabbitmq
ports:
- "15673:5672"
packager:
build:
context: ./maven_images
dockerfile: Dockerfile
volumes:
- "/home/ustin/second_try/common_data:/home"
和 Dockerfile:
FROM maven
RUN mkdir clonefolder && cd clonefolder && git clone <repo.git> && cd docker-test-task && mvn clean package && cd target/ && cp docker-test-task-1.0.war /home && cd /home && ls
主要思想:在带有 maven 的镜像中使用 Dockerfile 我想克隆 repo,使用“clean package”命令创建 .war 文件并将其放置到“/home”文件夹,之前被定义为卷文件夹并与“/home”链接/ustin/second_try/common_data”在主机上。目前,我希望主机上有 .war 文件。然后我想把这个 .war 放到其他图像上,然后把这个文件放到 tomcat 中。
问题是:为什么我在/home 文件夹中的图像中找不到 .war 文件(但 cp 命令成功),而不是在主机文件夹中? (Ubuntu)
所有步骤 - 完成:
重建:http://prntscr.com/jrolk7
或缓存:http://prntscr.com/jrolun
最佳答案
您正在一个 RUN
中运行所有命令指示。您正在构建一个包含已编译 .war 文件的一层的镜像。
简短的回答是您需要使用此镜像和 docker cp
运行容器。你的文件出来到你的主机。
长答案是您应该考虑创建一个可重用的镜像,该镜像将动态构建您的 WAR 文件并使用卷输出到您的主机。
以下是有关 Dockerfiles 最佳实践的一些信息:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
关于ubuntu - 如何将 .war 从 docker-composer 移动到主机的值文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50724894/