0
SQL Server Command Line Utilitiesがインストールされている管理タスクを実行するために使用されるWindowsドッカーコンテナを作成しています。私の目標は、マルチステージビルドを使用して、MSI/chocolateyインストールクルフトが最終イメージに含まれないようにすることです。私はdocker build
を実行すると、私はこのエラーを取得:マルチステージDockerfileビルドでプログラムファイルをコピーできません - アクセスが拒否されました
Step 8/10 : COPY --from=setup ["C:\\Program Files\\Microsoft SQL Server" "C:\\Program Files\\Microsoft SQL Server"]
failed to create hash for Documents and Settings: readlink \\?\Volume{b9e10f4e-aa64-4233-a798-28aa8ac73055}\Documents and Settings: Access is denied.
が、それはこのようにProgram Files
からファイルをコピーすることは可能ですか?どのようにこれを動作させることができますか?ここで
は私Dockerfileです:
# Setup container installs chocolatey and sqlserver CLI tools
FROM microsoft/windowsservercore:latest as setup
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN Invoke-WebRequest -OutFile chocoinstall.ps1 "https://chocolatey.org/install.ps1"
RUN . .\chocoinstall.ps1
RUN choco install 'sqlserver-cmdlineutils' -version '13.1' --yes
# Deploy Tools image
FROM microsoft/windowsservercore:latest
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
# SQL server CLI tools
COPY --from=setup ["C:\\Program Files\\Microsoft SQL Server" "C:\\Program Files\\Microsoft SQL Server"]
RUN $env:PATH = 'C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn\\;' + $env:PATH;
ENTRYPOINT ["powershell"]
おかげで、@stefan(EDIT .dockerignoreファイルを削除しました)。私のCOPYステートメントでは、ファイルのバージョンで修正された根本的な原因が '、'欠けている可能性があります。これを行うと、 '.dockerignore'ファイルは必要ないように見えます。また、この構文を$ env:PATHが永続的でないように設定してPATH環境変数を設定しなければなりませんでした: 'RUN [Environment] :: SetEnvironmentVariable( 'Path'、$ env:Path + '; C:\ Program Files \ Microsoft SQL Server \ Client SDK \ ODBC \ 130 \ Tools \ Binn \ '、[EnvironmentVariableTarget] :: Machine) 'を実行します。残念ながら、この後もSQLツールは依然として壊れています。レジストリエントリまたは何かが不足している必要があります。 –
はい、そうです。それを動作させるためにいくつかのことを試した後、私はCOPY命令に "、"を追加しました。これは問題を解決するようです。だから私は私の答えで.dockerignoreファイルを削除しました。 –