我有一个docker容器,它的spring-boot应用程序。从这个 docker 容器中,我想访问本地 phantomjs 驱动程序。当我在 docker 中运行我的容器时,它会给出"驱动程序可执行文件不存在:/usr/bin/phantomjs"异常,但我的 phantomjs 驱动程序存在于此路径下。这个 docker 容器如何访问 '/usr/bin/phantomjs' 文件?我应该在 docker 文件中添加这一行 VOLUME/usr/bin/phantomjs 吗?Phantomjs 版本是 : 2.1.1
在我的应用程序中工作的解决方案是
码头工人文件
FROM openjdk:11
VOLUME /tmp
ARG JAR_FILE
COPY build/libs/*.jar app.jar
EXPOSE 8080 9090 8000
ENV PHANTOMJS_VERSION 2.1.1
RUN wget -q -O phantomjs.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-$PHANTOMJS_VERSION-linux-x86_64.tar.bz2
&& tar -f phantomjs.tar.bz2 -xj phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin/phantomjs
&& mv phantomjs-$PHANTOMJS_VERSION-linux-x86_64/bin/phantomjs /usr/local/bin/
&& rm -rf phantomjs-$PHANTOMJS_VERSION-linux-x86_64 phantomjs.tar.bz2
ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000","-jar","/app.jar"]
然后我可以直接在 java 中使用 phantomjs
spring-boot
我的爪哇代码
List<String> cmdArgs = new ArrayList<String>(5);
cmdArgs.add("phantomjs");
// Other code and other phantomjs args
ProcessBuilder proc = new ProcessBuilder().inheritIO().command(cmdArgs.toArray(new String[] {}));
Process process = proc.start();
if (process.waitFor() == 0 || process.exitValue() == 0) // Wait for PhantomJS to complete
{
ok = true;
}
else
{
errorMsg = String.valueOf(process.exitValue());
}