docker - 在 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 容器映像。我只是找不到他们中的任何一个。
解决方案
由于 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 路径。
推荐阅读
- javascript - Javascript - 我如何让点击动作只应用于上层元素
- javascript - [已解决]ApexCharts.js:如何为折线图中的轴标签设置固定值
- reactjs - React setState hook异步更新问题
- javascript - 闭包如何在 addEventListener 中工作?
- c - 计算点相交的沿纬度长向量的距离
- sharepoint - 使用 jsom 在 Sharepoint 中获取术语及其子术语
- google-colaboratory - 如何从其他公共驱动器直接将谷歌驱动器文件夹下载到colab而不下载到PC?
- javascript - Reactjs没有显示从状态生成的动态数据
- ios - Info.plist 文件未更新位置
- ruby-on-rails - Rails 6 Active Job“retry_stopped.active_job”订阅未触发