如何在基于Windows Server Core的Docker镜像中安装ODBC Driver 17?

ncecgwcz  于 12个月前  发布在  Docker
关注(0)|答案(1)|浏览(201)

我正在为我的应用程序设置一个新的docker windows servercore镜像。数据访问使用ODBC Driver 17 for SQL Server。我需要在镜像上安装这个,所以在我的Dockerfile中我包含了以下内容:

FROM mcr.microsoft.com/windows/servercore:ltsc2016

COPY msodbcsql_17.3.1.1_x64.msi c:\\msodbcsql_17.3.1.1_x64.msi

RUN msiexec.exe /i C:\\msodbcsql_17.3.1.1_x64.msi /norestart /qn IACCEPTMSODBCSQLLICENSETERMS=YES
...

字符串
当我运行docker build...时,我得到以下错误

The command 'cmd /S /C msiexec.exe /i C:\\msodbcsql_17.3.1.1_x64.msi /norestart /qn IACCEPTMSODBCSQLLICENSETERMS=YES' returned a non-zero code: 1603


代码1603表示需要重新启动。
我不确定如何重新启动映像。我该如何继续?没有驱动程序,我将无法运行应用程序。

9lowa7mx

9lowa7mx1#

所以我在启用日志记录的容器中手动运行MSI。原来失败是由于缺少VC++可再发行组件而发生的。
所以,我更新了Dockerfile,添加了一行复制和安装vc_redist.x64.exe,这为我解决了这个问题。
Dockerfile的sniphiles为我解决了这个问题。

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2
COPY vc_redist.x64.exe c:/ \
     msodbcsql_17.3.1.1_x64.msi c:/
RUN c:\\vc_redist.x64.exe /install /passive /norestart 
RUN msiexec.exe /i C:\\msodbcsql_17.3.1.1_x64.msi /norestart /qn /quiet /passive IACCEPTMSODBCSQLLICENSETERMS=YES 

...

字符串
只是把这个答案贴在这里,以防其他人遇到同样的问题。

相关问题