我正在尝试为在Windows容器的Docker中运行的ASP.NET Web应用程序设置SSL。我正在Windows 10上运行。
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:23:10 2020
OS/Arch: windows/amd64
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.24)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:37:20 2020
OS/Arch: windows/amd64
Experimental: true
以下是我的dockerfile:
FROM microsoft/aspnet:4.7.2-windowsservercore-1803
USER ContainerAdministrator
EXPOSE 443
ARG source
WORKDIR /inetpub/wwwroot
COPY ${source:-obj/Docker/publish} .
RUN Add-WindowsFeature Web-Scripting-Tools
RUN Remove-WebSite -Name 'Default Web Site'
RUN New-Website -Name 'myApp' -IPAddress '*' -Port 443 -PhysicalPath C:\inetpub\wwwroot -ApplicationPool '.NET v4.5' -Ssl -SslFlags 0
#CMD ["powershell.exe", "-File", "AddCertificate.ps1"]
#RUN ["powershell", "C:\inetpub\wwwroot\AddCertificate.ps1"]
RUN powershell.exe -Command "\
Import-Module IISAdministration; \
Import-Module WebAdministration; \
$pwd = ConvertTo-SecureString -String 'passw0rd!' -Force -AsPlainText; \
# Import the certificate and store it in a variable to bind to later; \
$cert = Import-PfxCertificate -Exportable -FilePath C:\inetpub\wwwroot\selfCert.pfx -CertStoreLocation cert:\localMachine\My -Password $pwd; \
# Take the imported certificate and bind it to all traffic toward port 443 (you need to specify IP if you want multiple apps on 1 docker which I believe is ill-advised); \
New-Item -Path IIS:\SslBindings\0.0.0.0!443 -value $cert;"
问题:Docker失败,错误是找不到selfCert.pfx。
我尝试将所有这些命令移至Powershell脚本并尝试运行该命令。 docker / powershell以某种方式也找不到我的.ps1文件。
当我手动连接到容器时,可以在预期的位置看到文件。我也可以成功执行.PS1。该问题仅在从dockerfile执行时发生。
我尝试了USER ContainerAdministrator,也使用通过-Bypass -File调用PowerShell的不同方法,但是无法从dockerfile运行它。
在运行此程序并确定发生这种情况的过程中需要一些帮助。
谢谢。
答案 0 :(得分:0)
我也面临着同样的问题。根据我的调查,同一目录中有一个 .dockerignore 文件,这导致了这些文件路径相关的限制。我们需要在 .dockerignore 文件中提及这些相对路径忽略语法。
我已经在Visual Studio中使用了发布解决方案功能,然后通过docker文件将内容从“发布”文件夹复制到了容器工作目录中。
已执行以下步骤: