对于我的用例,我需要创建一个Activeperl应用程序的Windows容器。我发现了一个GitHub link,它解释了草莓Perl的过程。
链接中的代码段
RUN \
if(!(Test-Path -Path 'C:\Temp')) \
{ \
New-Item \
-Path 'C:\Temp' \
-ItemType Directory \
-Verbose | Out-Null ; \
} ; \
\
Invoke-WebRequest \
-Uri "http://strawberryperl.com/download/$ENV:PERL_VERSION/strawberry-perl-$ENV:PERL_VERSION-64bit.zip" \
-OutFile "C:\\Temp\\strawberry-perl-$ENV:PERL_VERSION-64bit.zip" \
-UseBasicParsing \
-Verbose ; \
\
Expand-Archive \
-Path "C:\\Temp\\strawberry-perl-$ENV:PERL_VERSION-64bit.zip" \
-DestinationPath 'C:\Program Files\Perl' \
-Verbose ; \
\
Set-ItemProperty \
-Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment' \
-Name 'Path' \
-Value $($ENV:Path + ';C:\Program Files\Perl\perl\bin;C:\Program Files\Perl\perl\site\bin;C:\Program Files\Perl\c\bin') \
-Verbose ;
Strawberryperl Uri- http://strawberryperl.com/download/$ENV:PERL_VERSION/strawberry-perl-$ENV:PERL_VERSION-64bit.zip 对我来说,我想要一个等效的Uri来下载Activeperl而不是Strawberryperl。我什至可以使用已经安装了activeperl的Windows容器镜像。我只是找不到它们。
最佳答案
由于ActivePerl不提供下载Perl压缩版本的选项。
这就是我能够将 Activity 的Perl转移到Windows容器的方式
在我的宿主Windows计算机上,我从https://activeperl.software.informer.com/download/下载了Active Perl。
下载的文件是ActivePerl-5.28.1.0000-MSWin32-x64-e90bcbf1.msi
我已经将其安装在位置C:\ Perl64 \
将此Perl64文件夹复制到名为Perl_root的新文件夹中,以便可以通过Dockerfile将其复制到容器中。在与Perl_root相同的位置创建一个名为Dockerfile的文件。
Filesystem_Root
C:\
|__ docker_trial
|___ Perl_root
|___ Dockerfile
Dockerfile:#pulled a windows container from docker hub
FROM mcr.microsoft.com/windows/servercore:1607-amd64
ADD Perl_root .
打开命令提示符并导航至dockerfile所在的文件夹。>docker build --tag dockertrail:1.0 .
>docker run -it --name tag1 dockertrail:1.0
docker容器内部的终端打开后,打开PowerShell并创建更新环境变量Path,如下所示Powershell>[Environment]::SetEnvironmentVariable("Path",$env:Path+"C:\Perl64\site\bin;C:\Perl64\bin","Machine")
从PowerShell和容器退出。现在,重新启动容器tag1,以使环境变量起作用。再次启动容器tag1,一旦启动,打开PowerShell并运行
$env:Path
命令,您必须能够看到将perl路径添加到环境变量中。现在使用命令
perl -v
检查Perl的功能这应该打印出perl版本。