我有一个非常简单的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手动创建一个空容器,并手动执行每个命令,它工作正常。发生了什么事?
答案 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)
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
contactPicker.predicateForSelectionOfContact = NSPredicate(format: "emailAddresses.@count > 0")
contactPicker.displayedPropertyKeys = [CNContactNicknameKey, CNContactEmailAddressesKey]
然后进入容器以查看实际存在的内容。事实证明,我意外地在我正在使用的撰写文件中用卷声明覆盖/ fuseki文件夹。 (捂脸...)