Docker入口点无法找到文件

时间:2018-06-04 13:54:23

标签: docker docker-compose dockerfile

我有一个非常简单的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手动创建一个空容器,并手动执行每个命令,它工作正常。发生了什么事?

3 个答案:

答案 0 :(得分:0)

如果我构建并运行您的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=""

因此,如果您在自己的环境中设置FUSEKI_HOME环境变量 Dockerfile

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

答案 1 :(得分:0)

我认为问题是行尾-入口点需要具有LF行尾。 当我的入口点的CLRF行结束时,我会收到相同的错误。

答案 2 :(得分:-1)

哇......经过@ larsk的建议后,我突然想把入口点更改为

let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
contactPicker.predicateForSelectionOfContact = NSPredicate(format: "emailAddresses.@count > 0")
contactPicker.displayedPropertyKeys = [CNContactNicknameKey, CNContactEmailAddressesKey]

然后进入容器以查看实际存在的内容。事实证明,我意外地在我正在使用的撰写文件中用卷声明覆盖/ fuseki文件夹。 (捂脸...)