# Custom Jenkins image for Powder Coating Logix production deployments. # Adds: .NET 8 SDK, Azure CLI, sqlcmd (mssql-tools18), dotnet-ef global tool. # # Build: docker build -t pcl-jenkins ./jenkins # Run: docker run -d -p 8080:8080 -p 50000:50000 \ # -v jenkins_home:/var/jenkins_home \ # --name pcl-jenkins pcl-jenkins FROM jenkins/jenkins:lts USER root # ── Base utilities ──────────────────────────────────────────────────────────── RUN apt-get update && apt-get install -y --no-install-recommends \ wget curl gnupg2 apt-transport-https lsb-release zip unzip ca-certificates \ && rm -rf /var/lib/apt/lists/* # ── .NET 8 SDK ──────────────────────────────────────────────────────────────── RUN wget -q https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb \ -O /tmp/ms-prod.deb \ && dpkg -i /tmp/ms-prod.deb \ && rm /tmp/ms-prod.deb \ && apt-get update \ && apt-get install -y --no-install-recommends dotnet-sdk-8.0 \ && rm -rf /var/lib/apt/lists/* # ── Azure CLI ───────────────────────────────────────────────────────────────── RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash \ && rm -rf /var/lib/apt/lists/* # ── mssql-tools18 (sqlcmd) ─────────────────────────────────────────────────── RUN curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \ | gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg \ && echo "deb [signed-by=/usr/share/keyrings/microsoft-prod.gpg] \ https://packages.microsoft.com/debian/12/prod bookworm main" \ > /etc/apt/sources.list.d/mssql-release.list \ && apt-get update \ && ACCEPT_EULA=Y apt-get install -y --no-install-recommends \ mssql-tools18 unixodbc-dev \ && rm -rf /var/lib/apt/lists/* ENV PATH="$PATH:/opt/mssql-tools18/bin" # ── dotnet-ef global tool ───────────────────────────────────────────────────── # Installed into /root/.dotnet/tools (not JENKINS_HOME, which is a volume mount # and would be wiped on first run). A symlink exposes it system-wide. RUN DOTNET_CLI_HOME=/root dotnet tool install --global dotnet-ef --version 8.0.11 \ && ln -s /root/.dotnet/tools/dotnet-ef /usr/local/bin/dotnet-ef USER jenkins