java - Docker 文件 COPY 然后 WORKDIR,但文件位于不同的目录中

标签 java python bash docker

我有两个 Docker 镜像:imageAimageB

ImageA Dockerfile

FROM openjdk:11-jre-slim
COPY ./target/java-app.jar /java-application/

ImageB Dockerfile

FROM imageA

# Install Python.
RUN \
  apt-get update && \
  apt-get install -y python python-dev python-pip python-virtualenv && \
  rm -rf /var/lib/apt/lists/*

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
COPY . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

ENTRYPOINT ./startPythonServiceAndJavaApp.sh

startPythonServiceAndJavaApp.sh - 是启动 java 应用程序和 python 应用程序的脚本。

java -XX:+UseContainerSupport $JAVA_OPTIONS -jar ./java-application/java-app.jar & python app.py;

然后我构建imageA - docker build -t imageA .。构建成功。

然后我构建imageB并启动容器。 python 应用程序启动成功,但出现错误

Error: Unable to access jarfile ./java-application/java-app.jar

当我 ssh 到正在运行的容器(注意,它正在运行)时,我进入 app 目录。我运行了 ls 并看到了这些文件:

C:\Users\user>docker exec -it 12345  bash
root@12345:/app# ls
Dockerfile  app.py  deploy.sh  requirements.txt  java-app.jar  startPythonServiceAndJavaApp.sh

我的问题是,为什么java-app.jar最终出现在app目录中?在 imageADockerfile 中,我告诉它位于 java-application 目录中:

COPY ./target/java-app.jar /java-application/

最佳答案

我的问题可以改写为COPYWORKDIR 在一起。作为一个快速解决方案,我将 jar 文件放入 docker 上下文的根目录中。然后我从该上下文启动了两个应用程序。

以下是更改:

ImageA Dockerfile - 只需复制到容器的根目录。 复制 ./target/java-app.jar/

startPythonServiceAndJavaApp.sh java -XX:+UseContainerSupport $JAVA_OPTIONS -jar ./java-app.jar & python app.py;

两个应用程序现在都在单个容器中运行。希望这会帮助其他人。如果我错了,请纠正我或分享你的想法。

关于java - Docker 文件 COPY 然后 WORKDIR,但文件位于不同的目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55925609/

相关文章:

python - SQLalchemy 插入 - AttributeError : object has no attribute 'items'

regex - sed - 跨多个文件删除某些字符串的部分

bash - 遍历 URL

java正则表达式查找具有特殊字符的精确单词

java - 如何从一串数字中提取单个数字?

java - 如何正确使用try-catch?

java - 在 Android 5.0+ 中短时间间隔使用重复警报的正确方法是什么?

Python:从后台子进程获取标准输出

python - ipython 无法在 Windows 上运行

bash - GNU Parallel - 哪个作业失败了?