Aracılığıyla paylaş


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

Visual Studio'nun dışında Dockerfile ile bir kapsayıcı projesi oluşturmak istiyorsanız, docker build (veya podman build) veya dotnet publish /t:PublishContainer komut satırından oluşturabilirsiniz.

.NET SDK derleme türünü kullanıyorsanız, Dockerfile'nız yoktur; bu nedenle, docker build veya podman build kullanamazsınız. Bunun yerine, komut satırında derlemek için dotnet publish /t:PublishContainer kullanın.

Visual Studio'nun dışında Dockerfile kullanarak bir kapsayıcı projesi oluşturmak istiyorsanız, docker build veya dotnet publish /t:PublishContainer komut satırından bu komutları kullanarak oluşturabilirsiniz.

.NET SDK derleme tipini kullanıyorsanız Dockerfile'nız yoktur; bu nedenle docker build komutunu kullanamazsınız; bunun yerine, komut satırından derlemek için dotnet publish /t:PublishContainer kullanın.

Önkoşullar

Önkoşullar

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 veya .slnx) 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.

docker build -f Dockerfile ..

.NET Framework projeleri için varsayılan derleme bağlamı çözüm klasörü değil proje klasörüdür.

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

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

Docker derlemesi veya Podman derlemesi kullanma

Komut satırından kapsayıcılı çözüm oluşturmak için genellikle çözümdeki her proje için komutunu docker build <context> (veya podman 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 veya .slnx) 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.

docker build -f Dockerfile ..
podman build -f Dockerfile ..

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

<PropertyGroup>
   <ContainerBuildContext>contextfolder</ContainerBuildContext>
</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.

Projeye kapsayıcı 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 Kapsayıcı Desteği Ekle'yi bu 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 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 ContainerBuildyerine hedef Build 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 .

Komut satırından yapı oluşturma

Visual Studio, geliştirme ve hata ayıklama için en iyi şekilde çalışacak şekilde yapılandırılmış bir kapsayıcı görüntüsü oluşturmak için Hızlı Modu (etkinse) kullanır, bu nedenle Hızlı Mod derlemesinden sonra Docker derleme komutlarını Çıkış penceresinden kopyalamanızı önermeyiz. Standart olmayan iyileştirmeler olmadan standart bir görüntü oluşturmak için Dockerfile dosyasına sağ tıklayıp Docker görüntüsü oluştur seçeneğini belirleyebilirsiniz.

Visual Studio, geliştirme ve hata ayıklama için en iyi şekilde çalışacak şekilde yapılandırılmış bir kapsayıcı görüntüsü oluşturmak için Hızlı Modu (etkinse) kullanır, bu nedenle Hızlı Mod derlemesinden sonra Çıkış penceresinden docker build veya podman build komutlarını kopyalamanızı önermeyiz. Standart olmayan iyileştirmeler olmadan standart bir görüntü oluşturmak için Dockerfile dosyasına sağ tıklayıp Görüntü Oluştur seçeneğini belirleyebilirsiniz.

Visual Studio, hata ayıklama sırasında başlangıç süresini iyileştirmek için özel olarak hazırladığı görüntülerin belirtilmesi için etiketini kullanır dev . Ancak, bu görüntüler Visual Studio bağlamı dışında kullanılmamalıdır. Bu etiket, görüntülerin, örneğin Hızlı Mod hata ayıklamasını desteklemek için standart olmayan değişiklikler ve özelleştirmeler olduğunun bir göstergesidir. Bkz. Visual Studio'da Docker kapsayıcılarını özelleştirme.