RUN powershell -Command Start-Process -Wait -FilePath C:\otp_win64_23.3.exe -ArgumentList /S;
构建Docker映像有效,当我以容器作为容器运行时,我会收到以下主要错误:
erlang_home无法正确设置。
请设置erlang_home以指向您的Erlang安装或 将RabbitMQ服务器分布放在Erlang Lib文件夹中。
因此,环境变量未正确设置,也缺少bin文件夹。某些安装工件可以在C:\ Program Files RL-23.2中找到...这种方法在三个月前起作用,现在不再起作用,我不知道发生了什么变化。
该图像建立在Windows Server 2019上,并具有Windows Server 2019作为基本图像。当我使用Docker台式机上构建本地开发人员(Windows 11)时,它可以正常工作,但在Build Server(Mirantis Container Runtime)上不行。那么什么是不同的呢?
这个是我的Dockerfile的最小例子:
FROM mcr.microsoft.com/windows/servercore:ltsc2019
HEALTHCHECK --interval=10s \
CMD powershell -command \
try { \
$response = iwr http://localhost:8080/base/version -UseBasicParsing; \
if ($response.StatusCode -eq 200) { return 0} \
else {return 1}; \
} catch { return 1 }
ADD binaries/jdk-11.0.2-win jdk-11.0.2
ADD binaries/rabbitmq_server-3.8.14 rabbitmq_server-3.8.14
ADD binaries/otp_win64_23.3.exe otp_win64_23.3.exe
ADD binaries/python-2.7.11.amd64.msi python-2.7.11.amd64.msi
RUN powershell -Command Start-Process -Wait -FilePath C:\\otp_win64_23.3.exe -ArgumentList /S;
RUN powershell -Command Start-Process msiexec.exe -Wait -ArgumentList '/I C:\python-2.7.11.amd64.msi /quiet ALLUSERS=1 TARGETDIR=C:\python27 ADDLOCAL=ALL'
RUN for /d %f in ("C:\rabbitmq_server-*") do @mklink /D C:\rabbitmq_server "%f" && exit
ADD config/rabbitmq/init-rabbitmq.ps1 /mydir/init-rabbitmq.ps1
ADD /testerlang.ps1 /mydir/testerlang.ps1
ARG JAVA_HOME="C:\jdk-11.0.2"
ENV JAVA_HOME="C:\jdk-11.0.2"
ARG ERLANG_HOME="C:\Program Files\erl-23.3"
ENV ERLANG_HOME="C:\Program Files\erl-23.3"
RUN setx path "%path%;C:\rabbitmq_server\sbin;C:\python27"
WORKDIR C:\\mydir
CMD ["powershell.exe", "./testerlang.ps1"]
Testerlang.ps1
C:\rabbitmq_server\sbin\rabbitmq-service.bat install
C:\rabbitmq_server\sbin\rabbitmq-service.bat start
Copy-Item "C:\Windows\system32\config\systemprofile\.erlang.cookie" -Destination "C:\Users\ContainerAdministrator\.erlang.cookie" -Force
C:\mydir\init-rabbitmq.ps1
C:\rabbitmq_server\sbin\rabbitmq-service.bat stop
C:\rabbitmq_server\sbin\rabbitmq-service.bat start
ping -t localhost > $null
我尝试了多种事情(不同的机器,不同的命令,使用巧克力...),但是我从未发现过不同行为的原因。对我来说,这看起来像是一件许可,但我真的不知道。
没有真正的解决方案,而是解决方法: Windows Server 2019图像的tour kb5044277 totrife hiveresty一切正常。由于KB5046615 Microsoft更改了某些东西,因此破坏了Erlang的安装。一个假设是安装程序随附的Visual C ++重新分布可引起问题。
将Docker文件更改为现在解决此问题:FROM mcr.microsoft.com/windows/servercore:1809-KB5044277-amd64