問題描述
在 Docker 容器中安裝 Windows 服務 (Install Windows service in Docker container)
當我嘗試在 dockerfile
中將應用程序作為服務安裝時,我收到一條錯誤消息,表明 installutil.exe
在安裝服務時顯示用戶名對話框。最初我想在主機域上使用一個帳戶,但似乎 Docker for Windows 不支持 linux 上可用的主機網絡設置。
為了解決這個問題,我首先創建了一個管理員用戶,然後使用用戶名和密碼參數調用 installutil。這給出了錯誤
帳戶名無效或不存在,或者指定的帳戶名的密碼無效。
FROM microsoft/dotnet‑framework
SHELL ["powershell.exe", "‑Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'Continue'; $verbosePreference='Continue';"]
RUN New‑LocalUser ‑Name "testuser" ‑Password (ConvertTo‑SecureString ‑AsPlainText "Stackoverflow1234!" ‑Force) ‑FullName "Test.User" ‑Description "LocalAdministrator"
RUN Add‑LocalGroupMember ‑Group administrators ‑Member adapteruser ‑Verbose
RUN New‑Item ‑Path "C:/dev" ‑ItemType directory
WORKDIR /dev
COPY ".\dev" "C:\dev"
RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=testuser /password=Stackoverflow1234! /LogToConsole=true /ShowCallStack myapp.exe
我已經也試過了:
RUN net user /add testuser Stackoverflow1234!
RUN net localgroup administrators testuser /add
RUN net user
參考解法
方法 1:
To use the new user I had to add ".\" to the username (for local machine):
RUN "C:/Windows/Microsoft.NET/Framework64/v4.0.30319/InstallUtil.exe" /username=.\testuser /password=Stackoverflow1234! /LogToConsole=true /ShowCallStack myapp.exe
(by SturmUndDrang、SturmUndDrang)