嗨,我正在工作一个项目,其中 springboot 项目使用 Maven 依赖项jpowershell
现在我的问题是我已经使用 rhel 7 基础映像对项目进行了 docker 化,还安装了 powershell 并尝试运行我的 docker 映像,但出现错误并且 docker 容器退出
PowerShell 不可用 com.profesorfalken.jpowershell.PowerShellNotAvailableException:无法执行 PowerShell.exe。请确保您的系统中已安装它
这是我的 docker 文件,我遵循正确的程序还是犯了一些错误。任何帮助将不胜感激
FROM something.abc.com/test-base/rhel:7
ENV http_proxy http://http.proxy.xyz.com:8000
ENV https_proxy http://http.proxy.xyz.com:8000
ENV no_proxy localhost,127.0.0.1,.xyz.com
ENV PATH="/usr/java/jdk-15.0.1/bin:$PATH"
# Install common packages
RUN yum install -y bzip2
RUN yum install -y wget
RUN wget https://github.com/PowerShell/PowerShell/releases/download/v7.3.7/powershell-7.3.7-1.rh.x86_64.rpm
RUN yum install -y powershell-7.3.7-1.rh.x86_64.rpm
RUN pwsh --version
# Download and Install OpenJDK 15
RUN cd /tmp && wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz && \
tar -xvzf openjdk-15.0.1_linux-x64_bin.tar.gz && \
mkdir -p /usr/java && mv /tmp/jdk-15.0.1 /usr/java
VOLUME /tmp
ADD target/xyz-*.jar /app/xyz/sample.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app/xyz/sample.jar"]
如 Powershell 文档中所述,Powershell 5.1 之后:
PowerShell 的二进制名称已从 powershell(.exe) 更改为 pwsh(.exe)
jPowershell 正在寻找名为
powershell
的二进制文件,该二进制文件在您的环境中无法工作。
一种可能的解决方案是更改 jPowershell 正在寻找的可执行文件名称(如此处所述):
//Creates PowerShell session
try (PowerShell powerShell = PowerShell.openSession("pwsh")) {
...
}