Posso automatizzare completamente la distribuzione Docker di un CoreCLR .Net su un server CI senza installare Visual Studio?

3

Sto sperimentando la distribuzione di app di Core.N. 5 di ASP.Net a contenitori Docker di Linux. Letteralmente tutti gli articoli, i post, ecc. Che ho trovato implicano l'uso della GUI di Visual Studio. Alla pubblicazione viene creato uno script PowerShell, che credo possa essere riutilizzato su un server CI. Ma questo script sembra dipendere da un VS14 installato, inclusa l'estensione Docker:

function Ensure-DockerCommand {
    [cmdletbinding()]
    param()
    process {
        if (! (Get-Command docker -errorAction SilentlyContinue))
        {
            $vsInstallPath = (Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0" -Name InstallDir | select -ExpandProperty InstallDir)
            if ([string]::IsNullOrEmpty($env:ProgramW6432)) {
                $vsKeyPath = "HKLM:\SOFTWARE\Microsoft\VisualStudio.0"
            }
            else {
                $vsKeyPath = "HKLM:\SOFTWARE\Wow6432Node\Microsoft\VisualStudio.0"
            }

            $vsInstallPath = (Get-ItemProperty $vsKeyPath -Name InstallDir | select -ExpandProperty InstallDir)
            $dockerExtensionPath = Join-Path $vsInstallPath "Extensions\Microsoft\Windows Azure Tools\Docker"
            $env:Path = "$dockerExtensionPath;" + $env:Path
        }
    }
}

Qualcuno è riuscito a farlo senza installare Visual Studio su un server di build?

O pensi che questa domanda sia prematura, perché il supporto per questo non è ancora disponibile ancora . Non riesco a trovare alcuna documentazione pertinente.

    
posta EagleBeak 09.11.2015 - 16:34
fonte

1 risposta

1

Non hai sicuramente bisogno di Visual Studio installato. Non è nemmeno necessario che DNVM o DNX siano installati o eseguiti in un ambiente Windows. Tuttavia, è necessario il client Docker e l'accesso a un host Docker.

Ecco alcune istruzioni su come creare ed eseguire immagini Docker di ASP.Net 5: link

L'essenza di ciò è che crei un Dockerfile nella radice del tuo progetto:

FROM microsoft/aspnet

COPY . /app
WORKDIR /app
RUN ["dnu", "restore"]

EXPOSE 5004
ENTRYPOINT ["dnx", "-p", "project.json", "kestrel"]

E poi semplicemente emetti il comando di costruzione Docker:

docker build -t myapp .

E poi lo esegui:

docker run -t -d -p 80:5004 myapp

L'immagine ASP.Net predefinita usa il runtime Mono, ma se vuoi usare il runtime CoreCLR puoi semplicemente specificare un tag nell'istruzione FROM:

FROM microsoft/aspnet:1.0.0-beta8-coreclr

Vedi il repository di Aspnet-docker per informazioni aggiornate su quali tag sono disponibili: link

    
risposta data 14.11.2015 - 10:40
fonte

Leggi altre domande sui tag