首页 > 解决方案 > 在 docker 中安装 Activeperl 需要 Uri

问题描述

对于我的用例,我需要创建一个 Activeperl 应用程序的 windows 容器。我找到了一个GitHub 链接,它解释了 Strawberry 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 容器映像。我只是找不到他们中的任何一个。

标签: dockerperldocker-for-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 的文件。

文件系统_根

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 的功能,perl -v 这应该打印 perl 版本。 在此处输入图像描述


推荐阅读