Docker-ga. NET Core Console ilovasini yarating

Visual Studio 2017 (RTM) bilan yangi .NET Core Console dasturini yaratdim. Keyin Docker-ni qo'llab-quvvatladi va docker faylini olgach + fayllarni yaratdi. Biroq ular bilan bir nechta muammolar mavjud.

Docker kompozitsiyasini hosil qilishda quyidagi xato xabari muvaffaqiyatsizlikka tushadigan 2-versiya mavjud

Microsoft.DotNet.Docker.CommandLineClientException: mijozning versiyasi 1.22 juda eski. Minimal qo'llab-quvvatlanadigan API versiyasi 1.24 ni tashkil qiladi, iltimos mijozni yangi versiyasiga yangilang.

Ushbu kompilyatsiya fayl versiyalarini 2.1 ga qo'l bilan o'zgartirish orqali aniqlanishi mumkin. (to'g'ri tuzatmagani aniq emas) Keyin yana bir xato xabari olasiz

MSB4006 "DockerCleanServiceReferences" maqsadini o'z ichiga olgan maqsadli qaramlik grafigida dumaloq bog'liqlik mavjud.

Bu qanday tuzatishni bilmayman. Xato xabari dairesel havolalarga olib keladigan ba'zi bir konfiguratsiya tufayli sodir bo'lganligini bilaman (masalan, yaratilgan post-qurilish hodisasi)

Ya'ni, .NET Core konsol ilovasini docker konteyneriga qo'lda qanday paketlash kerakligi haqida biron-bir ma'lumot yoki maslahatlar bormi? Men faqatgina Dockerni taniyman, shuning uchun hali biror narsani bilmayman.

Yana bir savol, bu Visual Studio shablonlarining yangilangan versiyasini olishim mumkinmi yoki bu ma'lum muammolar mavjudmi?

3

7 javoblar

Bu muammo men uchun DockerFile, SLN faylini olganligi va CSPROJ fayllarini bir xil papkada joylashganligini aniqladi. Agar siz qanday echim yaratganingizni bilsangiz, sizdan pastki katalog yaratmoqchimisiz? Agar siz qilmasangiz va sizning SLN va CSPROJ fayllaringiz bir xil papkaga ega bo'lsa, muqarrar ravishda Docker fayllari bir xil papkaga qo'shilib, dumaloq mos yozuvlar yaratadi. Sizning SLN faylingiz CSPROJ faylingiz ustida joylashgan katalogda yashasa, DockerFile va boshqalar sizning ota-katalogingizga SLN fayli qo'yiladi va ularning hammasi yaxshi bo'ladi. Buni men uchun hal qildi.

2
qo'shib qo'ydi
Ha, men pastki katalog yaratish uchun "ha" dedim va .sln .csproj ustidagi papkada, lekin Dockerfile csproj bilan bir xil papkada yaratilgan
qo'shib qo'ydi muallif Kirsten Greed, manba
Rahmat! Bu muammoni hal qildi.
qo'shib qo'ydi muallif Antti Simonen, manba

Post uchun rahmat. NanoSIM Server konteynerini "yaqinda" qo'shamiz. O'sha paytgacha shunga o'xshash tajriba beradigan Linux konteynerlari bilan ishlashingiz mumkin.

2
qo'shib qo'ydi
Men Linux konteynerlarini odatiy holga keltirdim, bu xatoga yo'l qo'ydim, Windows konteynerlariga o'tishga harakat qildim, hech qanday o'zgarish yo'q - xatolik bor edi.
qo'shib qo'ydi muallif codeMonkey, manba
Dovudning javobiga mening sharhimni qarang. Linuxga o'tdingiz va hali ham ishlamayapsizmi? Menda boshqa narsa kerakmi?
qo'shib qo'ydi muallif Antti Simonen, manba

Post uchun rahmat. NanoSIM Server konteynerini "yaqinda" qo'shamiz. O'sha paytgacha shunga o'xshash tajriba beradigan Linux konteynerlari bilan ishlashingiz mumkin.

2
qo'shib qo'ydi
Men Linux konteynerlarini odatiy holga keltirdim, bu xatoga yo'l qo'ydim, Windows konteynerlariga o'tishga harakat qildim, hech qanday o'zgarish yo'q - xatolik bor edi.
qo'shib qo'ydi muallif codeMonkey, manba
Dovudning javobiga mening sharhimni qarang. Linuxga o'tdingiz va hali ham ishlamayapsizmi? Menda boshqa narsa kerakmi?
qo'shib qo'ydi muallif Antti Simonen, manba

Windows uchun Docker Linuxni aniqlayotganini tekshirib ko'rsangiz bo'ladimi? Ehtimol, siz Windows konteynerini qidirayotgan edingiz, bu hali. NET Core bilan qo'llab-quvvatlanmaydi.

2
qo'shib qo'ydi
Men Windows-ni Windows-ga qaratmoqchi bo'lganimda Docker bor edi, lekin uni Linuxga o'zgartirdim va haqiqiy qurish xatoligida hech qanday o'zgarish bo'lmadi. Hali ham dumaloq qaramlik uchun xatolik yuzaga keldi. Bundan tashqari compose-vs.release/debug.yml fayli bor ... targetoperationsystem = linux
qo'shib qo'ydi muallif Antti Simonen, manba

Windows uchun Docker Linuxni aniqlayotganini tekshirib ko'rsangiz bo'ladimi? Ehtimol, siz Windows konteynerini qidirayotgan edingiz, bu hali. NET Core bilan qo'llab-quvvatlanmaydi.

2
qo'shib qo'ydi
Men Windows-ni Windows-ga qaratmoqchi bo'lganimda Docker bor edi, lekin uni Linuxga o'zgartirdim va haqiqiy qurish xatoligida hech qanday o'zgarish bo'lmadi. Hali ham dumaloq qaramlik uchun xatolik yuzaga keldi. Bundan tashqari compose-vs.release/debug.yml fayli bor ... targetoperationsystem = linux
qo'shib qo'ydi muallif Antti Simonen, manba

VS2017 ning dastlabki o'ng tomonida docker bilan standart shablonni ishlatib, men shu masala bo'yicha harakat qildim. Men ushbu maqolaga ishora qildim - https://blogs.msdn.microsoft.com/containerstuff/2017/03/13/visual-studio-2017-client-version-1-22-is-too-old/ Men uchun bu shunday ish bo'ldi - tavsiya qilinganidek, ushbu o'zgarishlarni docker-compose project docker-compose.ci.build.yml: 2 ga o'rnatilgan faylning yuqorisidagi "versiya" parametri 2.1 ga o'zgartirildi Loyihadagi boshqa fayllarda bir xil o'zgarishlarni takrorlagan:

docker-compose.yml

docker-compose.override.yml

docker-compose.vs.debug.yml

docker-compose.vs.release.yml

1
qo'shib qo'ydi

.NET Core konsol ilovasini Docker tasviriga qo'lda qanday paketlash haqida savolingiz haqida. https://github.com/dotnet/dotnet-docker-samples uchun mo'ljallangan Bu savolga javob berish uchun. Ularni tekshiring. Agar ular bilan muammoga duch kelsangiz yoki takliflaringiz bo'lsa, iltimos (masalan, https://github .com/dotnet/dotnet-docker-namunalari/muammolar ).

0
qo'shib qo'ydi