Files
Operation-Blue-Laminate-v2/BlueLaminate/BlueLaminate.C2/Dockerfile
bob dc7c3f99ae Add cs.money worker stack with per-worker IPRoyal residential proxy
Brings up the pull-model scraper: the .NET C2 hands skin+wear jobs to Python nodriver workers that scrape cs.money and post results back, plus the supporting Core/EFCore data model, migrations, and docker-compose orchestration.

IPRoyal proxying lets workers scale horizontally with a distinct residential exit IP each: every worker process mints its own sticky session at startup, and an in-process forwarding proxy injects the gateway auth so Chromium talks only to an auth-free localhost endpoint (zero CDP). On a Cloudflare challenge a worker rotates to a fresh session/IP and re-warms. Verified end-to-end against live IPRoyal: distinct US residential exits per worker and IP rotation on demand.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 15:03:53 -05:00

25 lines
1.2 KiB
Docker

# Build context is the REPO ROOT (so Central Package Management's Directory.*.props
# at the root are available). Build with:
# docker compose build (compose sets the context)
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /src
# Restore against the full solution sources the C2 transitively needs.
COPY Directory.Build.props Directory.Packages.props ./
COPY BlueLaminate/ BlueLaminate/
RUN dotnet restore BlueLaminate/BlueLaminate.C2/BlueLaminate.C2.csproj
RUN dotnet publish BlueLaminate/BlueLaminate.C2/BlueLaminate.C2.csproj \
-c Release -o /app --no-restore
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
# NOTE: deliberately do NOT install libgssapi-krb5-2. Without it Npgsql logs a
# harmless "cannot load libgssapi_krb5.so.2" line and falls back to password auth;
# WITH it, a failed/misconfigured connection attempt segfaults during GSS negotiation
# (observed: container exit 139 / crash-loop). Graceful failure beats the segfault.
WORKDIR /app
COPY --from=build /app ./
# Bind all interfaces inside the container (overrides appsettings' localhost binding).
ENV ASPNETCORE_URLS=http://+:5080
EXPOSE 5080
ENTRYPOINT ["dotnet", "BlueLaminate.C2.dll"]