- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Docker 容器 PowerShell 在安装和使用 (Azure) 模块时的行为与主机不同
我需要在 Windows docker 容器内进行各种 Azure PowerShell 事件,因为 Octopus Cloud 要求我在该上下文中运行我的工作线程。他们的标准脚本步骤似乎不支持这一点,建议我使用 docker 容器来创建预构建的 PowerShell 上下文。
在我的 win 10 机器上安装这些模块并运行脚本工作正常
我可以安装这些模块(进行一些调整),但它们包含的命令似乎不可用。我更改了模块路径,更改了用户上下文,设置了执行策略,导入了模块,但似乎没有任何效果。下面显示了一个示例,其中模块已安装(使用 Get-InstalledModule)但使用该命令失败,请注意,使用 Get-InstalledModule -Name 时该模块不会显示已安装。仅使用 Connect-AzAccount 连接时出现类似错误。
下图显示 (a) 该模块已安装 (b) 该模块的命令失败 (c) 该模块无法从安装模块位置获得。
使用同一容器进行复制
使用基础容器进行复制
Set-PSRepository -Name 'PSGallery' -InstallationPolicy TrustedSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser[Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]::Tls12
Install-Module Az.Accounts -AllowClobber -SkipPublisherCheck -Scope CurrentUserInstall-Module Az.KeyVault -AllowClobber -SkipPublisherCheck -Scope CurrentUserInstall-Module -Name Az -AllowClobber -Scope CurrentUser
用于检查证书过期的示例脚本,但细节并不重要。这是在本地工作的问题是即使安装模块后也找不到特定于 Azure 的命令。
param ($appId, $secret, $tenant, $vault, $certkey, $expiryDays)
$pass = ConvertTo-SecureString $secret -AsPlainText -Force
$isCertificateHealthy = $false
# Ensure the correct Azure module in PowerShell is installed
$azAccountsInstalled = Get-InstalledModule Az.Accounts
if( ! $azAccountsInstalled) {
Install-Module Az.Accounts -AllowClobber -a
}
else{
Write-Host "Az.Accounts already present" -ForegroundColor Yellow
}
$azCertificateInstalled = Get-InstalledModule Az.KeyVault
if( ! $azCertificateInstalled) {
Install-Module Az.KeyVault -a
}
else{
Write-Host "Az.KeyVault already present" -ForegroundColor Yellow
}
$cred = New-Object System.Management.Automation.PSCredential($appId,$pass)
Connect-AzAccount -ServicePrincipal -Credential $cred -Tenant $tenant
$cert = Get-AzKeyVaultCertificate -VaultName $vault -Name $certkey
$expiryDate = $cert.Expires
Write-Host "Certificate expiry: [$expiryDate]"
$daysToExpire = [math]::Ceiling(($expiryDate-(Get-Date)).TotalDays)
Write-Host "Days to expiry: [$daysToExpire]"
if ($daysToExpire -ge $expiryDays) {
$isCertificateHealthy = $true
}
if ($isCertificateHealthy) {
Write-Host "Certificate is healthy"
} else {
Write-Host "Warning! Certificate is not healthy"
}
任何帮助将不胜感激,我对 Docker 相当陌生,并且该功能在主机上工作,因此如果我在问题的那个空间中忽略了某些内容,我不会感到惊讶。我已经运行了 octopus 云项目并配置为使用它,只需要在容器上提供命令即可。
最佳答案
向@Svyatoslav Pidgorny致敬,感谢 AllUsers 完成了这个技巧,但值得用它来解压一些上下文。
为了获得运行此功能的完整解决方案,我做了:
docker run -it --user ContainerAdministrator --dns="8.8.8.8" mcr.microsoft.com/powershell:nanoserver-1909
Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Install-Module Az.Accounts -AllowClobber -SkipPublisherCheck -Scope AllUsers
Install-Module Az.KeyVault -AllowClobber -SkipPublisherCheck -Scope AllUsers
Install-Module -Name Az -AllowClobber -SkipPublisherCheck -Scope AllUsers
之后,您需要提交容器并将其推送到 Docker Hub。
关于azure - 将 PowerShell 模块安装到 docker 容器后,无法使用来自 PowerShell 模块的命令(在主机上同样有效),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70053368/
我通过 spring ioc 编写了一些 Rest 应用程序。但我无法解决这个问题。这是我的异常(exception): org.springframework.beans.factory.BeanC
我对 TestNG、Spring 框架等完全陌生,我正在尝试使用注释 @Value通过 @Configuration 访问配置文件注释。 我在这里想要实现的目标是让控制台从配置文件中写出“hi”,通过
为此工作了几个小时。我完全被难住了。 这是 CS113 的实验室。 如果用户在程序(二进制计算器)结束时选择继续,我们需要使用 goto 语句来到达程序的顶部。 但是,我们还需要释放所有分配的内存。
我正在尝试使用 ffmpeg 库构建一个小的 C 程序。但是我什至无法使用 avformat_open_input() 打开音频文件设置检查错误代码的函数后,我得到以下输出: Error code:
使用 Spring Initializer 创建一个简单的 Spring boot。我只在可用选项下选择 DevTools。 创建项目后,无需对其进行任何更改,即可正常运行程序。 现在,当我尝试在项目
所以我只是在 Mac OS X 中通过 brew 安装了 qt。但是它无法链接它。当我尝试运行 brew link qt 或 brew link --overwrite qt 我得到以下信息: ton
我在提交和 pull 时遇到了问题:在提交的 IDE 中,我看到: warning not all local changes may be shown due to an error: unable
我跑 man gcc | grep "-L" 我明白了 Usage: grep [OPTION]... PATTERN [FILE]... Try `grep --help' for more inf
我有一段代码,旨在接收任何 URL 并将其从网络上撕下来。到目前为止,它运行良好,直到有人给了它这个 URL: http://www.aspensurgical.com/static/images/a
在过去的 5 个小时里,我一直在尝试在我的服务器上设置 WireGuard,但在完成所有设置后,我无法 ping IP 或解析域。 下面是服务器配置 [Interface] Address = 10.
我正在尝试在 GitLab 中 fork 我的一个私有(private)项目,但是当我按下 fork 按钮时,我会收到以下信息: No available namespaces to fork the
我这里遇到了一些问题。我是 node.js 和 Rest API 的新手,但我正在尝试自学。我制作了 REST API,使用 MongoDB 与我的数据库进行通信,我使用 Postman 来测试我的路
下面的代码在控制台中给出以下消息: Uncaught DOMException: Failed to execute 'appendChild' on 'Node': The new child el
我正在尝试调用一个新端点来显示数据,我意识到在上一组有效的数据中,它在数据周围用一对额外的“[]”括号进行控制台,我认为这就是问题是,而新端点不会以我使用数据的方式产生它! 这是 NgFor 失败的原
我正在尝试将我的 Symfony2 应用程序部署到我的 Azure Web 应用程序,但遇到了一些麻烦。 推送到远程时,我在终端中收到以下消息 remote: Updating branch 'mas
Minikube已启动并正在运行,没有任何错误,但是我无法 curl IP。我在这里遵循:https://docs.traefik.io/user-guide/kubernetes/,似乎没有提到关闭
每当我尝试docker组成任何项目时,都会出现以下错误。 我尝试过有和没有sudo 我在这台机器上只有这个问题。我可以在Mac和Amazon WorkSpace上运行相同的容器。 (myslabs)
我正在尝试 pip install stanza 并收到此消息: ERROR: No matching distribution found for torch>=1.3.0 (from stanza
DNS 解析看起来不错,但我无法 ping 我的服务。可能是什么原因? 来自集群中的另一个 Pod: $ ping backend PING backend.default.svc.cluster.l
我正在使用Hibernate 4 + Spring MVC 4当我开始 Apache Tomcat Server 8我收到此错误: Error creating bean with name 'wel
我是一名优秀的程序员,十分优秀!