# Docker часть 1
Что нужно сделать:
1. Написать Dockerfile, который позволит собрать образ для запуска вашего проекта.
*Очевидно что в докерфайле будут примерно следующие шаги:
Подходящий базовый образ
Подготовка окружения
Копирование файлов сборки в образ
Старт сервера - главный процесс контейнера
2*. Локально протестируйте, что сборка проходит успешно.
Локально протестируйте, что запуск контейнера приводит к запуску сервера.
Проверьте, что при запущенном контейнере при попытке отправить запрос в контйнеризованный сервер получается увидеть ответ.
3. Сделайте коммит Dockerfile-а в ваш gitlab репозиторий
4. Напишите новую джобу (давайте называть ее: build-docker), которая будет проводить сборку вашего проекта в docker-образ
Что показать ментору:
1. Dockerfile в вашем репозитории
2. gitlab-ci.yaml в вашем репозитории, в котором появилась новая джоба build-docker, способная собрать ваш проект в docker образ с помощью Dockerfile из первого пункта
# Ответы
```
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["Convertet C-F/Convertet_C-F.csproj", "Convertet C-F/"]
RUN dotnet restore "Convertet C-F/Convertet_C-F.csproj"
COPY . .
WORKDIR "/src/Convertet C-F"
RUN dotnet build "Convertet_C-F.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Convertet_C-F.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Convertet_C-F.dll"]
```
.gitlab-ci.yml
```
stages:
- test
- build-docker
Test:
stage: test
script:
- ls -la
- if [ -f ./docker-compose.yml -a -f ./Convertet_C-F.sln ]; then echo "ok"; else false; fi;
tags:
- "dev"
build-docker:
stage: build-docker
script:
- docker build -f ./Convertet_C-F/Dockerfile -t tamplate_project .
tags:
- "dev"
allow_failure: false
```
