Можем ли мы добавить два дополнительных шага в конце существующего конвейера сборки? Это был бы шаг для публикации в независимый от ОС двоичный формат и шаг для запуска «сборки docker», чтобы поместить опубликованное приложение в контейнер.
Нам по-прежнему необходимо выполнить развертывание на неконтейнерном веб-сайте IIS. Мы не хотели бы переделывать весь конвейер сборки или изменять компиляцию C #, чтобы она находилась внутри контейнера Docker.
Ранние этапы конвейера сборки, скорее всего, не выполнялись бы в контейнере или не имели вопросов о лицензировании. Например, стороннее сканирование качества кода, автоматические модульные тесты и метрики кода.
Среда: - ASP.NET MVC Core v3.0, Visual Studio 2019, C #, git - сервер сборки Windows, рабочий сервер Windows дляразмещенный веб-сайт - инструменты, относящиеся к нескольким сборочным конвейерам, не могут работать в контейнере - рабочий стол Docker 19.03.02, и контейнер будет работать на сервере, отличном от веб-сайта, не относящегося к Docker - рабочий стол Docker настроен на использование контейнеров Linux. Контейнер не будет размещаться в Azure или AWS. Kubernetes может быть использован в будущем.
- Разработчики разрабатывают локально либо с локального сайта IIS, либо с веб-сайта ISS хоста Dev-сервера.
Подход 1. Я создал ASP.NET для Visual Studio 2019. Приложение Core v3.0 MVC с поддержкой Docker. Это требует от нас переделки всего нашего сборочного конвейера. Это не сработало.
Подход 2: 1. В Visual Studio 2019 создайте новое приложение ASP.NET Core MVC без поддержки Docker. Он пуст, только с веб-страницей шаблона проекта ASP.NET Visual Studio по умолчанию. Это приложение не ссылается на какие-либо базы данных, внешние службы или чтение / запись на локальный диск сервера2. Скомпилируйте, постройте сайт и перейдите к нему http://localhost:44327 показывает стартовую страницу3. Щелкните правой кнопкой мыши проект внутри решения и выберите «Опубликовать». Выберите пустой каталог для целевого местоположенияУдалить существующие файлы: TrueКонфигурация: релизИзменить параметры публикацииМетод публикации: Файловая системаКонфигурация: релизЦелевая платформа: netcoreapp 3.0Режим развертывания: Зависит от платформыTarget Runtime: PortableУдалить все существующие файлы перед публикацией: TrueВ проекте не найдены базы данных4. Создайте образ DockerОткройте командную строку Visual Studio 2019, перейдите в каталог публикацииЗапустите «docker build -t aspnetcoretestproject2.», Чтобы создать образ Docker. Запустите «docker run -d -p 8080: 80 --name myapp aspnetcoretestproject2», чтобы запустить контейнер Docker5. Откройте веб-браузер, перейдите на http://localhost:8080, и страница не отображается, Chrome и Firefox показывают ошибку не удается подключитьсяFirefox: Firefox не может установить соединение с сервером по адресу localhost: 8080. Chrome: ERR_NETWORK_ACCESS_DENIED
DockerfileОТ mcr.microsoft.com/dotnet/core/aspnet:3.0WORKDIR / приложениеКОПИЯ. ,ENTRYPOINT ["dotnet", "aspnetcoretestproject2.dll"]ЭКСПОЗИЦИЯ 80
Вывод из "docker build -t aspnetcoretestproject2."
Sending build context to Docker daemon 4.687MB
Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
---> 675139f95df1
Step 2/5 : WORKDIR /app
---> Running in ab5f645d61cf
Removing intermediate container ab5f645d61cf
---> 4bb71c776e95
Step 3/5 : COPY . .
---> b7d24c41184b
Step 4/5 : ENTRYPOINT ["dotnet", "aspnetcoretestproject2.dll"]
---> Running in 557ca917185f
Removing intermediate container 557ca917185f
---> 3b578aa4bb7f
Step 5/5 : EXPOSE 80
---> Running in c0a9911668a9
Removing intermediate container c0a9911668a9
---> 316323857411
Successfully built 316323857411
Successfully tagged aspnetcoretestproject2:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directorie
образ докера ls
REPOSITORY TAG IMAGE ID CREATED SIZE
aspnetcoretestproject2 latest 316323857411 About a minute ago 212MB
mcr.microsoft.com/dotnet/core/sdk 3.0-buster 4422e7fb740c 3 weeks ago 689MB
mcr.microsoft.com/dotnet/core/aspnet 3.0 675139f95df1 3 weeks ago 207MB
mcr.microsoft.com/dotnet/core/aspnet 3.0-buster-slim 675139f95df1 3 weeks ago 207MB
k8s.gcr.io/kube-proxy v1.14.6 ed8adf767eeb 8 weeks ago 82.1MB
k8s.gcr.io/kube-apiserver v1.14.6 0e422c9884cf 8 weeks ago 209MB
k8s.gcr.io/kube-scheduler v1.14.6 d27987bc993e 8 weeks ago 81.6MB
k8s.gcr.io/kube-controller-manager v1.14.6 4bb274b1f2c3 8 weeks ago 157MB
docker/kube-compose-controller v0.4.23 a8c3d87a58e7 4 months ago 35.3MB
docker/kube-compose-api-server v0.4.23 f3591b2cb223 4 months ago 49.9MB
alpine 3.5 f80194ae2e0c 8 months ago 4MB
k8s.gcr.io/coredns 1.3.1 eb516548c180 9 months ago 40.3MB
k8s.gcr.io/etcd 3.3.10 2c4adeb21b4f 10 months ago 258MB
k8s.gcr.io/pause 3.1 da86e6ba6ca1 22 months ago 742kB
node 6.11.5 852391892b9f 23 months ago 662MB
контейнер докера ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
defe82a7223a f80194ae2e0c "ping 8.8.8.8" 6 minutes ago Up 6 minutes k8s_testpod_demo_default_dd2702f7-eeac-11e9-a181-00155dde9201_5
Publish directory contents
10/16/2019 09:31 AM 340 .dockerignore
10/16/2019 01:29 PM 146 appsettings.Development.json
10/16/2019 01:29 PM 192 appsettings.json
10/16/2019 04:24 PM 106,602 AspNetCoreTestProject2.deps.json
10/16/2019 04:24 PM 9,216 AspNetCoreTestProject2.dll
10/16/2019 04:24 PM 159,744 AspNetCoreTestProject2.exe
10/16/2019 03:45 PM 224 AspNetCoreTestProject2.runtimeconfig.json
10/16/2019 04:24 PM 35,840 AspNetCoreTestProject2.Views.dll
10/16/2019 07:12 PM 160 Dockerfile
10/16/2019 04:24 PM 566 web.config
10/16/2019 04:24 PM wwwroot
Есть ли пропущенный шаг или неправильная конфигурация в Dockerfile?
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0
WORKDIR /app
COPY . .
ENTRYPOINT ["dotnet", "aspnetcoretestproject2.dll"]
EXPOSE 80
Ожидаемый результат будет для главной страницы веб-сайта, которая будет видна при переходе на localhost: 8080.
Я попробовал демо на основе nodejs для книги назначений с веб-сайта справки docker, и она работает и отображает стартовую страницу для веб-сайта. Таким образом, веб-сайт внутри контейнера на моем локальном компьютере можно просматривать из браузера на том же локальном компьютере.
Ссылки .NET Core - включая ASP.NET .Core - https://hub.docker.com/_/microsoft-dotnet-corehttps://docs.microsoft.com/en-us/dotnet/core/docker/introduction.NET примеры https://github.com/docker/labs/blob/master/windows/readme.mdhttps://docs.microsoft.com/en-us/dotnet/core/docker/build-containerПоддержка док-станции Visual Studio 2019 https://docs.microsoft.com/en-us/visualstudio/containers/overview?view=vs-2019Сборка ядра .net внутри контейнера Docker - https://docs.docker.com/engine/examples/dotnetcore/Устранение неполадок в докереide Visual Studio https://docs.microsoft.com/en-us/visualstudio/containers/troubleshooting-docker-errors?view=vs-2019