Aracılığıyla paylaş


Komut satırından kapsayıcı projesi oluşturma

Visual Studio dışında bir Dockerfile ile kapsayıcı projesi oluşturmak istiyorsanız, komut satırından derlemek için docker build, MSBuild, dotnet buildveya dotnet publish kullanabilirsiniz.

.NET SDK derleme türünü kullanıyorsanız Dockerfile'nız olmadığından docker buildkullanamazsınız; bunun yerine, komut satırında derlemek için MSBuild, dotnet build veya dotnet publish kullanın.

Docker Build kullan

Komut satırından kapsayıcılı çözüm oluşturmak için genellikle çözümdeki her proje için komut docker build <context> kullanabilirsiniz. Derleme bağlamı ve bağımsız değişken sağlarsınız. Dockerfile için derleme bağlamı, yerel makinede görüntüyü oluşturmak için çalışma klasörü olarak kullanılan klasördür. Örneğin, kapsayıcıya kopyalarken dosyaları kopyaladığınız klasördür. .NET Core projelerinde varsayılan değer, çözüm dosyasını (.sln) içeren klasörü kullanmaktır. Göreli yol olarak ifade edilen bu bağımsız değişken genellikle bir proje klasöründeki Dockerfile için ".." ve üst klasöründeki çözüm dosyasıdır. .NET Framework projeleri için varsayılan derleme bağlamı çözüm klasörü değil proje klasörüdür.

docker build -f Dockerfile ..

DockerfileContext özelliğini ayarlayarak proje dosyasında derleme bağlamını ayarlayabilirsiniz. Mesela

<PropertyGroup>
   <DockerfileContext>contextfolder</DockerfileContext>
</PropertyGroup>

Dockerfile içindeki göreli yollar derleme bağlamı ile ilişkilidir, bu nedenle bağlamı değiştirirseniz göreli yolları uygun şekilde güncelleştirdiğinizden emin olun.

Visual Studio 17.11 ve sonraki sürümlerde, bir projeye Docker desteği eklediğinizde, derleme bağlamı için bir klasör belirtebilirsiniz. Derleme bağlamını değiştirmek isterseniz Dockerfile dosyasını silebilir (saklamak istediğiniz başka değişiklikler yoksa) ve Docker Desteği Eklebu kez yeni derleme bağlamını belirterek yeniden çalıştırabilirsiniz. Yeni Dockerfile'da, yeni derleme bağlamına uygun olarak güncellenmiş göreli yollar yer alacak.

MSBuild kullanma

Not

Bu bölümde Dockerfile kapsayıcı derleme türünü seçtiğinizde Docker kapsayıcılarınızı nasıl özelleştirebileceğiniz açıklanmaktadır. .NET SDK derleme türünü kullanıyorsanız özelleştirme seçenekleri farklıdır ve bu makaledeki bilgiler geçerli değildir. Bunun yerine bir .NET uygulamasını dotnet publish ile kapsayıcı hale getirme hakkındabölümüne bakın.

.NET Framework projeleri için Visual Studio tarafından oluşturulan Docker dosyaları (ve Visual Studio 2017 Güncelleştirme 4 öncesindeki sürümleriyle oluşturulan .NET Core projeleri için) çok aşamalı Docker dosyaları değildir. Bu Dockerfile'lardaki adımlar kodunuzu derlemez. Bunun yerine, Visual Studio bir .NET Framework Dockerfile oluşturduğunuzda, ilk olarak MSBuild kullanarak projenizi derler. Bu başarılı olduğunda, Visual Studio dockerfile'ı oluşturur ve bu da MSBuild'den elde edilen Docker görüntüsüne derleme çıkışını kopyalar. Kodunuzu derleme adımları Dockerfile'a dahil olmadığından, komut satırından docker build kullanarak .NET Framework Dockerfiles oluşturamazsınız. Bu projeleri oluşturmak için MSBuild kullanmalısınız.

Tek bir Docker kapsayıcı projesi için görüntü oluşturmak için /t:ContainerBuild komut seçeneğiyle MSBuild kullanabilirsiniz. Bu komut MSBuild'e varsayılan hedef Buildyerine hedef ContainerBuild oluşturmasını söyler. Örneğin

MSBuild MyProject.csproj /t:ContainerBuild /p:Configuration=Release

Visual Studio IDE'den çözümünüzü oluştururken Çıktı penceresinde gördüğünüze benzer bir çıktı görürsünüz. Her zaman /p:Configuration=Releasekullanın, çünkü Visual Studio'nun çok aşamalı derleme iyileştirmesini kullandığı durumlarda, Hata Ayıklama yapılandırması oluşturulduğunda sonuçlar beklenildiği gibi olmayabilir. Hata ayıklama için kapsayıcı görüntülerini özelleştirmeye bakın.

Docker Compose projesi kullanıyorsanız görüntü oluşturmak için şu komutu kullanın:

msbuild /p:SolutionPath=<solution-name>.sln /p:Configuration=Release docker-compose.dcproj

MSBuild günlüklerini görüntülemek için "MSBuild ile derleme günlüklerini alma" bölümüne bakın .