| 1 | FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build |
| 2 | WORKDIR /src |
| 3 | COPY forge.plugins.toml . |
| 4 | COPY registry/ registry/ |
| 5 | COPY config/ config/ |
| 6 | COPY docker/forge-build.slnx docker/forge-build.slnx |
| 7 | COPY src/AgentForge.Abstractions/ src/AgentForge.Abstractions/ |
| 8 | COPY src/AgentForge.Mcp.Core/ src/AgentForge.Mcp.Core/ |
| 9 | COPY src/AgentForge/ src/AgentForge/ |
| 10 | COPY src/AgentForge.Plugin.Sdk/ src/AgentForge.Plugin.Sdk/ |
| 11 | COPY src/AgentForge.Plugin.View/ src/AgentForge.Plugin.View/ |
| 12 | COPY src/AgentForge.Plugin.OAuth.Web/ src/AgentForge.Plugin.OAuth.Web/ |
| 13 | COPY src/AgentForge.Plugin.OAuth.GitHub/ src/AgentForge.Plugin.OAuth.GitHub/ |
| 14 | COPY src/AgentForge.Plugin.Org.Web/ src/AgentForge.Plugin.Org.Web/ |
| 15 | COPY src/AgentForge.Plugin.Grouping.Core/ src/AgentForge.Plugin.Grouping.Core/ |
| 16 | COPY src/AgentForge.Plugin.Grouping.Repositories/ src/AgentForge.Plugin.Grouping.Repositories/ |
| 17 | COPY src/AgentForge.Plugin.Grouping.Releases/ src/AgentForge.Plugin.Grouping.Releases/ |
| 18 | COPY src/AgentForge.Plugin.Issue/ src/AgentForge.Plugin.Issue/ |
| 19 | COPY src/AgentForge.Plugin.MergeRequest/ src/AgentForge.Plugin.MergeRequest/ |
| 20 | COPY src/AgentForge.Plugin.Lens/ src/AgentForge.Plugin.Lens/ |
| 21 | COPY src/AgentForge.Plugin.Ci/ src/AgentForge.Plugin.Ci/ |
| 22 | COPY src/AgentForge.Plugin.Releases/ src/AgentForge.Plugin.Releases/ |
| 23 | COPY src/AgentForge.Plugin.RepositoryImport.GitHub.Core/ src/AgentForge.Plugin.RepositoryImport.GitHub.Core/ |
| 24 | COPY src/AgentForge.Plugin.RepositoryImport.GitHub/ src/AgentForge.Plugin.RepositoryImport.GitHub/ |
| 25 | COPY src/AgentForge.Plugin.RepositoryImport.GitHub.User/ src/AgentForge.Plugin.RepositoryImport.GitHub.User/ |
| 26 | COPY src/AgentForge.Plugin.Org.Import.GitHub/ src/AgentForge.Plugin.Org.Import.GitHub/ |
| 27 | COPY src/AgentForge.Plugin.Instance.UserManagement/ src/AgentForge.Plugin.Instance.UserManagement/ |
| 28 | COPY src/AgentForge.Plugin.Organization.UserManagement/ src/AgentForge.Plugin.Organization.UserManagement/ |
| 29 | # One restore/build graph: each project compiled once; host publish copies plugin DLLs from bin/. |
| 30 | RUN dotnet restore docker/forge-build.slnx |
| 31 | RUN dotnet build docker/forge-build.slnx -c Release --no-restore |
| 32 | RUN dotnet publish src/AgentForge/AgentForge.csproj -c Release -o /app/publish /p:UseAppHost=false --no-restore |
| 33 | |
| 34 | FROM mcr.microsoft.com/dotnet/aspnet:10.0 |
| 35 | RUN apt-get update \ |
| 36 | && apt-get install -y --no-install-recommends git ca-certificates \ |
| 37 | && rm -rf /var/lib/apt/lists/* |
| 38 | WORKDIR /app |
| 39 | ENV ASPNETCORE_URLS=http://0.0.0.0:8770 |
| 40 | ENV FORGE_DATABASE_PATH=/data/forge.witdb |
| 41 | ENV FORGE_REPOS_PATH=/data/repos |
| 42 | ENV FORGE_PUBLIC_BASE_URL=http://127.0.0.1:8770 |
| 43 | ENV FORGE_GIT_BASE_URL=ssh://git@127.0.0.1 |
| 44 | ENV FORGE_GIT_SSH_PORT=2222 |
| 45 | VOLUME /data |
| 46 | EXPOSE 8770 |
| 47 | COPY --from=build /app/publish . |
| 48 | ENTRYPOINT ["dotnet", "AgentForge.dll"] |
| 49 | |