diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..38bece4
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,25 @@
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/.idea
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/Lagrange.Milky/Dockerfile b/Lagrange.Milky/Dockerfile
new file mode 100644
index 0000000..cfdd16d
--- /dev/null
+++ b/Lagrange.Milky/Dockerfile
@@ -0,0 +1,32 @@
+FROM alpine:3.23 AS base
+USER root
+USER $APP_UID
+WORKDIR /app
+
+FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build
+RUN apk update && apk add build-base
+ARG BUILD_CONFIGURATION=Release
+ARG GIT_SHA=Unknown
+ENV DOCKER=true
+WORKDIR /src
+COPY ["Lagrange.Milky/Lagrange.Milky.csproj", "Lagrange.Milky/"]
+COPY ["Lagrange.Codec/Lagrange.Codec.csproj", "Lagrange.Codec/"]
+COPY ["Lagrange.Core/Lagrange.Core.csproj", "Lagrange.Core/"]
+COPY ["Lagrange.Proto.Generator/Lagrange.Proto.Generator.csproj", "Lagrange.Proto.Generator/"]
+COPY ["Lagrange.Proto/Lagrange.Proto.csproj", "Lagrange.Proto/"]
+COPY ["Lagrange.Milky.Implementation.Api.Generator/Lagrange.Milky.Implementation.Api.Generator.csproj", "Lagrange.Milky.Implementation.Api.Generator/"]
+RUN dotnet restore "Lagrange.Milky/Lagrange.Milky.csproj"
+COPY . .
+WORKDIR "/src/Lagrange.Milky"
+RUN dotnet build "./Lagrange.Milky.csproj" -p:SourceRevisionId=$GIT_SHA -c $BUILD_CONFIGURATION -o /app/build
+
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./Lagrange.Milky.csproj" -p:SourceRevisionId=$GIT_SHA -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
+
+FROM base AS final
+WORKDIR /app
+ENV DOCKER=true
+COPY --from=publish /app/publish .
+WORKDIR /data
+ENTRYPOINT ["/app/Lagrange.Milky"]
diff --git a/Lagrange.Milky/Lagrange.Milky.csproj b/Lagrange.Milky/Lagrange.Milky.csproj
index c9f5038..0e4b091 100644
--- a/Lagrange.Milky/Lagrange.Milky.csproj
+++ b/Lagrange.Milky/Lagrange.Milky.csproj
@@ -6,6 +6,10 @@
enable
true
+
+ Linux
+ true
+
true
@@ -33,4 +37,10 @@
+
+
+
+ .dockerignore
+
+
\ No newline at end of file