Docker Phantomjs驱动程序访问

问题描述 投票:0回答:1

我有一个docker容器,它的spring-boot应用程序。从这个Docker容器中,我想访问本地phantomjs驱动程序。当我在docker中运行容器时,出现“驱动程序可执行文件不存在:/ usr / bin / phantomjs”异常,但我的phantomjs驱动程序存在于此路径下。这个docker容器如何访问'/ usr / bin / phantomjs'文件?我应该在Docker文件中添加VOLUME / usr / bin / phantomjs这行吗?phantomjs版本为:2.1.1

java docker phantomjs
1个回答
0
投票

在我的应用程序中有效的解决方案是

dockerfile]

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

我的Java代码] >>

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());
}
© www.soinside.com 2019 - 2024. All rights reserved.