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
|
2026-06-21 19:51:43 +02:00
|
|
|
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
|
2026-06-21 19:51:43 +02:00
|
|
|
|
|
|
|
|
FROM scratch AS export
|
2026-09-16 17:08:17 +02:00
|
|
|
COPY --from=build /out/VoiceCat.Server /VoiceCat.Server
|
2026-06-21 19:51:43 +02:00
|
|
|
|
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
|
2026-06-21 19:51:43 +02:00
|
|
|
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"]
|