ace/Dockerfile
gmriggs c420312a89
.net10 build (#4392)
* .net10 build

* update appveyor version

* update appveyor vs version

* Update appveyor.yml

* Update ACE.Server.csproj

* Update PacketHeaderOptional.cs

* Update .vsconfig

* Update ACE.Adapter.csproj

* Update ACE.Common.csproj

* Update ACE.Database.Tests.csproj

* Update ACE.Database.csproj

* Update ACE.DatLoader.Tests.csproj

* Update ACE.DatLoader.csproj

* Update ACE.Entity.csproj

* Update ACE.Server.Tests.csproj

* Update ACE.Server.csproj

* Update ACE.Database.csproj

* Update Dockerfile

* Update ACE.Common.csproj

* Update ACE.Database.Tests.csproj

* Update ACE.Database.csproj

* Update ACE.DatLoader.Tests.csproj

* Update ACE.DatLoader.csproj

* Update ACE.Server.Tests.csproj

* Update SphereTests.cs

* Update AppVeyor config

Suppress NETSDK1233 warnings for now

* Update AppVeyorBuild.bat

* Update ACE.sln

* Update appveyor.yml

* Update appveyor.yml

* Update appveyor.yml

* Update README.md

---------

Co-authored-by: Ty Conner <tyconner@itcproductions.com>
2026-02-15 13:41:34 -05:00

50 lines
1.5 KiB
Docker

FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build
ARG TARGETARCH
WORKDIR /Source
# copy csproj and restore as distinct layers
COPY ./Source/*.sln ./
COPY ./Source/ACE.Adapter/*.csproj ./ACE.Adapter/
COPY ./Source/ACE.Common/*.csproj ./ACE.Common/
COPY ./Source/ACE.Database/*.csproj ./ACE.Database/
COPY ./Source/ACE.Database.Tests/*.csproj ./ACE.Database.Tests/
COPY ./Source/ACE.DatLoader/*.csproj ./ACE.DatLoader/
COPY ./Source/ACE.DatLoader.Tests/*.csproj ./ACE.DatLoader.Tests/
COPY ./Source/ACE.Entity/*.csproj ./ACE.Entity/
COPY ./Source/ACE.Server/*.csproj ./ACE.Server/
COPY ./Source/ACE.Server.Tests/*.csproj ./ACE.Server.Tests/
RUN dotnet restore -a $TARGETARCH
# copy and publish app and libraries
COPY . ../.
RUN dotnet publish ./ACE.Server/ACE.Server.csproj -a $TARGETARCH -c release -o /ace --no-restore
# final stage/image
FROM mcr.microsoft.com/dotnet/runtime:10.0-noble
ARG DEBIAN_FRONTEND="noninteractive"
WORKDIR /ace
# install net-tools (netstat for health check) & cleanup
RUN apt-get update && \
apt-get install --no-install-recommends -y \
net-tools && \
apt-get clean && \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/*
# add app from build
COPY --from=build /ace .
# run app
ENTRYPOINT ["dotnet", "ACE.Server.dll"]
# ports and volumes
EXPOSE 9000-9001/udp
VOLUME /ace/Config /ace/Content /ace/Dats /ace/Logs /ace/Mods
# health check
HEALTHCHECK --start-period=5m --interval=1m --timeout=3s \
CMD netstat -an | grep 9000 > /dev/null; if [ 0 != $? ]; then exit 1; fi;