Files
voice-cat/Dockerfile
T

28 lines
1.2 KiB
Docker
Raw Normal View History

2026-09-16 17:08:17 +02:00
# syntax=docker/dockerfile:1.7
FROM mcr.microsoft.com/dotnet/sdk:10.0.203-noble AS build
WORKDIR /src
2026-09-16 17:08:17 +02:00
COPY global.json Directory.Build.props Directory.Build.targets ./
COPY core/proto/voicecat.proto core/proto/voicecat.proto
COPY dotnet/ dotnet/
RUN dotnet restore dotnet/src/VoiceCat.Server/VoiceCat.Server.csproj -r linux-x64 --locked-mode -p:NuGetLockFilePath=packages.publish.linux-x64.lock.json
RUN dotnet publish dotnet/src/VoiceCat.Server/VoiceCat.Server.csproj -c Release -r linux-x64 --self-contained true --no-restore \
-p:PublishSingleFile=true -p:PublishTrimmed=false -p:IncludeNativeLibrariesForSelfExtract=true -o /out \
&& mkdir /empty-data
FROM scratch AS export
2026-09-16 17:08:17 +02:00
COPY --from=build /out/VoiceCat.Server /VoiceCat.Server
2026-09-16 17:08:17 +02:00
FROM mcr.microsoft.com/dotnet/runtime-deps:10.0.10-noble-chiseled-extra AS runtime
WORKDIR /app
COPY --from=build --chown=1654:1654 /out/ ./
COPY --from=build --chown=1654:1654 /empty-data/ /data/
USER 1654:1654
VOLUME ["/data"]
EXPOSE 8384/tcp
EXPOSE 8384/udp
2026-09-16 17:08:17 +02:00
ENV VOICECAT_DATA_DIR=/data \
VOICECAT_BIND_ADDRESS=0.0.0.0 \
VOICECAT_BIND_PORT=8384
HEALTHCHECK --interval=30s --timeout=6s --start-period=10s --retries=3 CMD ["/app/VoiceCat.Server", "--health-check", "127.0.0.1:8384"]
ENTRYPOINT ["/app/VoiceCat.Server"]