Files
EonaCat.Sync/Dockerfile
T
2026-06-29 07:25:42 +02:00

60 lines
1.4 KiB
Docker

# Multi-stage Docker build for EonaCat.Sync
# Build stage
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
# Copy project files
COPY ["EonaCat.Sync/EonaCat.Sync.csproj", "EonaCat.Sync/"]
# Restore packages
RUN dotnet restore "EonaCat.Sync/EonaCat.Sync.csproj"
# Copy source code
COPY . .
# Build application
RUN dotnet build "EonaCat.Sync/EonaCat.Sync.csproj" -c Release -o /app/build
# Publish stage
FROM build AS publish
RUN dotnet publish "EonaCat.Sync/EonaCat.Sync.csproj" -c Release -o /app/publish
# Runtime stage
FROM mcr.microsoft.com/dotnet/runtime:6.0
WORKDIR /app
# Install additional tools if needed
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
&& rm -rf /var/lib/apt/lists/*
# Copy published application
COPY --from=publish /app/publish .
# Create non-root user for security
RUN useradd -m -u 1000 syncuser && \
chown -R syncuser:syncuser /app
USER syncuser
# Environment variables
ENV DOTNET_URLS=http://+:80 \
ASPNETCORE_ENVIRONMENT=Production \
SYNC_DATA_PATH=/data/sync \
SYNC_BACKUP_PATH=/data/backups \
SYNC_LOG_PATH=/data/logs
# Health check
HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \
CMD curl -f http://localhost:80/health || exit 1
# Expose ports
EXPOSE 80
# Entry point
ENTRYPOINT ["dotnet", "EonaCat.Sync.dll"]