首页 文章

Docker入口点无法找到文件

提问于
浏览
-2

我有一个非常简单的docker构建文件:

FROM openjdk:10

ENV JENAVERSION=3.7.0

RUN mkdir /fuseki

RUN wget http://apache.claz.org/jena/binaries/apache-jena-fuseki-$JENAVERSION.tar.gz -P /tmp \
    && tar -zxvf /tmp/apache-jena-fuseki-$JENAVERSION.tar.gz -C /tmp \
    && mv -v /tmp/apache-jena-fuseki-$JENAVERSION/* /fuseki

EXPOSE 3030

ENTRYPOINT ["/bin/bash", "/fuseki/fuseki-server"]

我在CMD和ENTRYPOINT上尝试了不同的变化,但没有任何东西允许执行“fuseki-server” . 始终是“没有这样的文件或目录”错误 . 如果我从openjdk:10手动创建一个空容器,并手动执行每个命令,它工作正常 . 这是怎么回事?

2 回答

  • -1

    如果我构建并运行你的 Dockerfile ,我会得到与你所描述的不同的错误 . 我知道了:

    Can't find jarfile to run
    

    如果查看 fuseki-server shell脚本,它会尝试相对于当前目录或 $FUSEKI_HOME 环境变量找到jar文件:

    export FUSEKI_HOME="${FUSEKI_HOME:-$PWD}"
    
    if [ ! -e "$FUSEKI_HOME" ]
    then
        echo "$FUSEKI_HOME does not exist" 1>&2
        exit 1
        fi
    
    JAR1="$FUSEKI_HOME/fuseki-server.jar"
    JAR2="$FUSEKI_HOME/jena-fuseki-server-*.jar"
    JAR=""
    

    因此,如果在 Dockerfile 中设置 FUSEKI_HOME 环境变量:

    ENV FUSEKI_HOME=/fuseki
    

    然后容器启动而没有错误:

    [2018-06-04 14:02:17] Server     INFO  Apache Jena Fuseki 3.7.0
    [2018-06-04 14:02:17] Config     INFO  FUSEKI_HOME=/fuseki
    [2018-06-04 14:02:17] Config     INFO  FUSEKI_BASE=/run
    [2018-06-04 14:02:17] Config     INFO  Shiro file: file:///run/shiro.ini
    [2018-06-04 14:02:18] Server     INFO  Started 2018/06/04 14:02:18 UTC on port 3030
    
  • 0

    哇...在经过@ larsk的建议后,我发现将入口点更改为

    ENTRYPOINT ["tail", "-f", "/dev/null"]
    

    并进入容器,看看实际上是什么 . 事实证明,我意外地在我正在使用的撰写文件中用卷声明覆盖/ fuseki文件夹 . (捂脸......)

相关问题