错误:在运行Docker容器时无法访问jar文件

4

当我尝试运行一个Docker容器时,出现以下错误:

Error: Unable to access jarfile

我的Dockerfile长这样:
FROM ubuntu:16.04

# Install Updates
RUN apt-get update -y && \
     apt-get upgrade -y && \
     apt-get install -y software-properties-common && \
     apt-add-repository -y ppa:openjdk-r/ppa && \
     apt-get update -y && \
     rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/*

# Install Packages
RUN apt-get -qq update -y && \
    apt-get -q install -y \
        wget \
        openssh-server \
        openjdk-8-jdk \
        && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /var/cache/*

# Add the config files
ADD /apps/ /home/smartling/

# Adding the jar application
ADD /apps/flagship/repo-connector-1.5.4/repo-connector-1.5.4.jar /home/smartling/flagship/repo-connector-1.5.4/

# Making sure the files are there
RUN ls -la /home/smartling/flagship/repo-connector-1.5.4/

# Start the jar file when container launches
CMD ["java","-jar","/home/smartling/flagship/repo-connector-1.5.4/repo-connector-1.5.4.jar -start&"]

然后我构建。
docker build -t smartlingflagship .

所有的操作都成功了

我运行容器

docker run --rm --name smartlingconn smartlingflagship

然后它返回以下错误:

Error: Unable to access jarfile /home/smartling/flagship/repo-connector-1.5.4/repo-connector-1.5.4.jar -start&

我有遗漏的吗?

2个回答

4
我能够通过在底部添加以下代码解决这个问题:ENTRYPOINT ["java","-jar","repo-connector-1.5.4.jar"] CMD ["-start"]

0

请您检查一下以下响应:

RUN ls -la /home/smartling/flagship/repo-connector-1.5.4/

检查文件repo-connector-1.5.4.jar是否具备运行所需的权限。如果没有,请使用chmod命令为该jar文件授予权限。
命令如下:
RUN ["chmod", "+x", "/home/smartling/flagship/repo-connector-1.5.4/repo-connector-1.5.4.jar"]

将上述命令放置在#之后,确保文件已经存在。
RUN ls -la /home/smartling/flagship/repo-connector-1.5.4/

没有起作用。仍然是同样的错误。在构建的输出中,文件权限为(-rwxr-xr-x 1 root root 217456 Oct 19 2016 repo-connector-1.5.4.jar)。 - teej2542
你好teej2542,我看到你正在使用-start&参数运行jar文件。Docker要求至少有一个进程在前台运行才能启动。请您将jar文件从后台切换到前台运行。谢谢。 - anil.mavila

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接