Я пишу ядро C # с помощью докеров (на основе контейнеров Linux).
В каждом изображении мне нужно скомпилировать + запустить.
Как я понимаю, мне нужны два изображения, однодля компиляции и один во время выполнения.Соответственно microsoft / dotnet: 2.1-sdk и microsoft / dotnet: 2.1-runtime
Я использую docker-compose, который выглядит следующим образом:
version: '3.4'
services:
TestDock:
image: test_dock
volumes:
- c:/my_data_folder:/data:rw
build:
context: ./my_projects/TestDock/
dockerfile: TestDock/Dockerfile
Мой Dockerfile выглядит следующим образом: FROMmicrosoft / dotnet: 2.1-runtime AS base WORKDIR / app
FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /src
COPY TestDock/TestDock.csproj TestDock/
FROM build AS publish
RUN dotnet publish TestDock.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "TestDock.dll"]
Все хорошо, но:
- Мне нужно включить изображения microsoft / dotnet: 2.1-runtime и microsoft/dotnet:2.1-sdk.
Для производства мне нужна только среда выполнения и без источника.Это огромный докер (более 500 МБ) - это нормально?
Уточнение: размер изображения зависит от размера файла и размера при запуске.
docker save my_image> my_image.tar
Это один размер.
docker-compose run my_image
Когда работает докер - он можетнемного места на диске и памяти - как это проверить?
Мне нужен докер минимального размера.
Могу ли я разделить докер на два докера?Также, как я могу использовать команду "docker-compose build" с определенным докером?
На некоторых компьютерах сборка занимает очень много времени (более 15 минут), но у меня много проектов, поэтому каждое исправление может занять много времени.
Почему на некоторых компьютерах это может занять слишком много времени (1 минута хороша против 15 минут плоха) - Что я могу проверить?Много ли установленных докеров может привести к низкой производительности?
Могу ли я контролировать, какой пользователь запускает каждое изображение?Что я могу сделать?
Как я могу отладить докер в отладчике (любой для ядра C #)?- Не только логи.
Спасибо.