需要Uri在Docker中安装Activeperl

问题描述

对于我的用例,我需要创建一个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压缩版本的选项。 这就是我将活动的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版本。 enter image description here