GraphDB Docker 容器无法 运行: adoptopenjdk/openjdk12:alpine
GraphDB Docker Container Fails to Run: adoptopenjdk/openjdk12:alpine
使用标准 Docker可用文件 here 时,GraphDB 无法启动,输出如下:
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME
查看它,Docker文件使用最近更新到 Alpine 3.14 的 adoptopenjdk/openjdk11:alpine
。
如果我切换到较旧的 Docker 映像(或使用 adoptopenjdk/openjdk12:alpine
),则 GraphDB 可以正常启动。
如何在使用最新版本 adoptopenjdk/openjdk11:alpine
的情况下解决此问题?
下面是 Docker文件:
FROM adoptopenjdk/openjdk11:alpine
# Build time arguments
ARG version=9.1.1
ARG edition=ee
ENV GRAPHDB_PARENT_DIR=/opt/graphdb
ENV GRAPHDB_HOME=${GRAPHDB_PARENT_DIR}/home
ENV GRAPHDB_INSTALL_DIR=${GRAPHDB_PARENT_DIR}/dist
WORKDIR /tmp
RUN apk add --no-cache bash curl util-linux procps net-tools busybox-extras wget less && \
curl -fsSL "http://maven.ontotext.com/content/groups/all-onto/com/ontotext/graphdb/graphdb-${edition}/${version}/graphdb-${edition}-${version}-dist.zip" > \
graphdb-${edition}-${version}.zip && \
bash -c 'md5sum -c - <<<"$(curl -fsSL http://maven.ontotext.com/content/groups/all-onto/com/ontotext/graphdb/graphdb-${edition}/${version}/graphdb-${edition}-${version}-dist.zip.md5) graphdb-${edition}-${version}.zip"' && \
mkdir -p ${GRAPHDB_PARENT_DIR} && \
cd ${GRAPHDB_PARENT_DIR} && \
unzip /tmp/graphdb-${edition}-${version}.zip && \
rm /tmp/graphdb-${edition}-${version}.zip && \
mv graphdb-${edition}-${version} dist && \
mkdir -p ${GRAPHDB_HOME}
ENV PATH=${GRAPHDB_INSTALL_DIR}/bin:$PATH
CMD ["-Dgraphdb.home=/opt/graphdb/home"]
ENTRYPOINT ["/opt/graphdb/dist/bin/graphdb"]
EXPOSE 7200
问题来自基础映像的更新。几周后采用切换到 alpine 3.14,它与旧容器运行时 (runc) 存在一些问题。该问题可以在发行说明中看到:https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
更新您的 Docker 将解决此问题。但是,如果您不想更新 Docker,有一个解决方法。
一些附加信息:
问题的原因是由于某种原因,旧 docker 版本和 alpine 3.14 中的容器 运行 似乎与测试标志“-x”有关,因此 if [-x /opt/java/openjdk/bin/java ] returns false,尽管 java 存在并且可执行。
您现在可以通过
解决此问题
- 拉取 GraphDB 分布
- 解压缩
- 打开 bin 文件夹中的“setvars.in.sh”
- 找到并删除第 32 行周围的 if 块
if [ ! -x "$JAVA" ]; then
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
exit 1
fi
- 再次压缩并在 Docker 文件中提供,而不是从 maven.ontotext.com
中提取
通过 'ADD' 将其传递到 Docker 文件
您可以查看 GraphDB 免费版的 Docker 文件以获取有关如何将 zip 文件传递到 Docker 文件的参考 https://github.com/Ontotext-AD/graphdb-docker/blob/master/free-edition/Dockerfile
使用标准 Docker可用文件 here 时,GraphDB 无法启动,输出如下:
Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME
查看它,Docker文件使用最近更新到 Alpine 3.14 的 adoptopenjdk/openjdk11:alpine
。
如果我切换到较旧的 Docker 映像(或使用 adoptopenjdk/openjdk12:alpine
),则 GraphDB 可以正常启动。
如何在使用最新版本 adoptopenjdk/openjdk11:alpine
的情况下解决此问题?
下面是 Docker文件:
FROM adoptopenjdk/openjdk11:alpine
# Build time arguments
ARG version=9.1.1
ARG edition=ee
ENV GRAPHDB_PARENT_DIR=/opt/graphdb
ENV GRAPHDB_HOME=${GRAPHDB_PARENT_DIR}/home
ENV GRAPHDB_INSTALL_DIR=${GRAPHDB_PARENT_DIR}/dist
WORKDIR /tmp
RUN apk add --no-cache bash curl util-linux procps net-tools busybox-extras wget less && \
curl -fsSL "http://maven.ontotext.com/content/groups/all-onto/com/ontotext/graphdb/graphdb-${edition}/${version}/graphdb-${edition}-${version}-dist.zip" > \
graphdb-${edition}-${version}.zip && \
bash -c 'md5sum -c - <<<"$(curl -fsSL http://maven.ontotext.com/content/groups/all-onto/com/ontotext/graphdb/graphdb-${edition}/${version}/graphdb-${edition}-${version}-dist.zip.md5) graphdb-${edition}-${version}.zip"' && \
mkdir -p ${GRAPHDB_PARENT_DIR} && \
cd ${GRAPHDB_PARENT_DIR} && \
unzip /tmp/graphdb-${edition}-${version}.zip && \
rm /tmp/graphdb-${edition}-${version}.zip && \
mv graphdb-${edition}-${version} dist && \
mkdir -p ${GRAPHDB_HOME}
ENV PATH=${GRAPHDB_INSTALL_DIR}/bin:$PATH
CMD ["-Dgraphdb.home=/opt/graphdb/home"]
ENTRYPOINT ["/opt/graphdb/dist/bin/graphdb"]
EXPOSE 7200
问题来自基础映像的更新。几周后采用切换到 alpine 3.14,它与旧容器运行时 (runc) 存在一些问题。该问题可以在发行说明中看到:https://wiki.alpinelinux.org/wiki/Release_Notes_for_Alpine_3.14.0
更新您的 Docker 将解决此问题。但是,如果您不想更新 Docker,有一个解决方法。
一些附加信息: 问题的原因是由于某种原因,旧 docker 版本和 alpine 3.14 中的容器 运行 似乎与测试标志“-x”有关,因此 if [-x /opt/java/openjdk/bin/java ] returns false,尽管 java 存在并且可执行。
您现在可以通过
解决此问题- 拉取 GraphDB 分布
- 解压缩
- 打开 bin 文件夹中的“setvars.in.sh”
- 找到并删除第 32 行周围的 if 块
if [ ! -x "$JAVA" ]; then echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME" exit 1 fi
- 再次压缩并在 Docker 文件中提供,而不是从 maven.ontotext.com 中提取
通过 'ADD' 将其传递到 Docker 文件 您可以查看 GraphDB 免费版的 Docker 文件以获取有关如何将 zip 文件传递到 Docker 文件的参考 https://github.com/Ontotext-AD/graphdb-docker/blob/master/free-edition/Dockerfile