Ctrl K
ComunidadGuías…

Dockerfile

Rama develop · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# syntax=docker/dockerfile:1

# ----- build -----
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /source

# restore first so the layer is cached until a project file changes
COPY src/Taskist.sln ./
COPY src/Libraries/Taskist.Core/Taskist.Core.csproj Libraries/Taskist.Core/
COPY src/Libraries/Taskist.Data/Taskist.Data.csproj Libraries/Taskist.Data/
COPY src/Libraries/Taskist.Service/Taskist.Service.csproj Libraries/Taskist.Service/
COPY src/Presentation/Taskist.Web/Taskist.Web.csproj Presentation/Taskist.Web/

# restore the web project, not the solution: the solution also lists the test project, which is not copied here
RUN dotnet restore Presentation/Taskist.Web/Taskist.Web.csproj

COPY src/ ./

RUN dotnet publish Presentation/Taskist.Web/Taskist.Web.csproj \
    -c Release \
    -o /app \
    --no-restore

# ----- runtime -----
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
WORKDIR /app

# curl backs the container health check
RUN apt-get update \
    && apt-get install -y --no-install-recommends curl \
    && rm -rf /var/lib/apt/lists/*

COPY --from=build /app ./

# data protection keys must outlive the container (attachments live in the database)
RUN mkdir -p /app/App_Data/DataProtectionKeys \
    && chown -R $APP_UID:$APP_UID /app/App_Data

# run as the non-root user provided by the base image
USER $APP_UID

ENV ASPNETCORE_ENVIRONMENT=Production \
    ASPNETCORE_HTTP_PORTS=8080

EXPOSE 8080

ENTRYPOINT ["dotnet", "Taskist.Web.dll"]