【发布时间】:2018-12-25 03:58:58
【问题描述】:
我有一个多模块 maven 项目,我想为每个模块创建和发布一个图像,除了一个通用的实用程序模块,它是所有其他模块的依赖项。
项目结构是这样的:
project_root
common_module
-pom.xml
module_a
-pom.xml
-Dockerfile
module_b
-pom.xml
-Dockerfile
-pom.xml
-docker-compose.yml
要构建 module_a fox 示例,我需要将 common_module 文件夹也复制到容器中,并首先在 common 文件夹上运行 mvn install。如果已构建,我也可以在 module_a 上运行 mvn install pom.xml。
我是 Docker 新手,这是我一直在尝试的,我认为应该可以工作,根据 documentation of the COPY command,其中指出:
可以指定多个 src 资源,但文件和目录的路径将被解释为相对于构建上下文的源。
我在 module_a 中有以下 Dockerfile:
FROM openjdk:8-jre-alpine
# Install Maven
# (skipped for brevity)
# Create the project root
RUN mkdir -p /usr/src/project_root
WORKDIR /usr/src/project_root
# Copy all the necessary files for the packaging
# Copy the common module
COPY common_module /usr/src/project_root/common_module
# Copy the service registry module (src + config folder)
COPY module_a /usr/src/project_root/module_a
# Run maven install
RUN cd common_module
RUN mvn clean install
RUN cd ../module_a
RUN mvn clean install
我从 project_root 文件夹发出这个命令(让它成为构建的上下文?):
docker build -t image_name:4.0 ./module_a
在第一个COPY 命令处构建失败,说明:
复制失败:stat /var/lib/docker/tmp/docker-builder380120612/common_module:没有这样的文件或目录
我什至不确定RUN 命令是否有效,因为在这些命令之前构建失败。
我做错了什么? 如何将文件夹/文件复制到 Dockerfile 位置之外?
顺便说一句,我在 Windows 10 Pro 上运行 Docker 版本 18.03.1-ce,构建 9ee9f40。
【问题讨论】:
标签: java maven docker dockerfile docker-build