mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-07-26 07:58:14 +00:00
6a63dea923
- Fix storage_ip derivation to use default route first, not Swarm RemoteManagers - Make iSCSI container entrypoint idempotent (check before create for target/LUN/bind) - Pin erichough/nfs-server from 'latest' to '2.2.1' for reproducibility - Replace curl|sh Docker install with apt repo in Dockerfile.test - Add docker.sock security warnings in docker-compose.test.yml and CI workflow - Update stale 'storage VM' references in comments and .env.test.example" Co-authored-by: GoodOlClint <151449+GoodOlClint@users.noreply.github.com> Agent-Logs-Url: https://github.com/GoodOlClint/PSProxmoxVE/sessions/534c0a63-2988-496c-b0ae-e291fcfa050b
77 lines
3.7 KiB
Docker
77 lines
3.7 KiB
Docker
# PSProxmoxVE development and integration testing container
|
|
#
|
|
# Two targets:
|
|
# dev - .NET SDK + PowerShell + Pester (build & test, works on ARM/x86)
|
|
# dev-infra - Adds Terraform + PVE provisioning tools (x86 only)
|
|
#
|
|
# Usage:
|
|
# # For build + test (works on Mac M-series):
|
|
# docker compose -f tests/docker-compose.test.yml up -d
|
|
#
|
|
# # For full CI flow including provisioning (x86 only):
|
|
# docker compose -f tests/docker-compose.test.yml --profile infra up -d
|
|
|
|
# ── Base: .NET SDK + PowerShell + Pester ────────────────────────────
|
|
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS dev
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
# Install base packages
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
curl jq openssh-client ca-certificates apt-transport-https gnupg \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install PowerShell: APT package on amd64, dotnet global tool on arm64.
|
|
# The Microsoft APT repo does not publish arm64 packages for PowerShell.
|
|
RUN if [ "$(dpkg --print-architecture)" = "amd64" ]; then \
|
|
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
|
|
| gpg --dearmor -o /usr/share/keyrings/microsoft-archive-keyring.gpg \
|
|
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-archive-keyring.gpg] \
|
|
https://packages.microsoft.com/ubuntu/24.04/prod noble main" \
|
|
> /etc/apt/sources.list.d/microsoft-prod.list \
|
|
&& apt-get update && apt-get install -y --no-install-recommends powershell \
|
|
&& rm -rf /var/lib/apt/lists/*; \
|
|
else \
|
|
dotnet tool install --global PowerShell \
|
|
&& ln -s /root/.dotnet/tools/pwsh /usr/local/bin/pwsh; \
|
|
fi
|
|
|
|
# Install Pester and prepare module directory
|
|
RUN pwsh -NoProfile -Command \
|
|
'Set-PSRepository -Name PSGallery -InstallationPolicy Trusted; \
|
|
Install-Module -Name Pester -MinimumVersion 5.0 -Scope AllUsers -Force' \
|
|
&& mkdir -p /usr/local/share/powershell/Modules/PSProxmoxVE
|
|
|
|
WORKDIR /repo
|
|
CMD ["pwsh", "-NoProfile"]
|
|
|
|
# ── Full: adds Terraform + PVE provisioning tools (x86 only) ───────
|
|
FROM dev AS dev-infra
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
dosfstools mtools sshpass python3 xorriso gnupg \
|
|
&& curl -fsSL https://apt.releases.hashicorp.com/gpg \
|
|
| gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg \
|
|
&& echo "deb [arch=amd64 signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
|
|
https://apt.releases.hashicorp.com noble main" \
|
|
> /etc/apt/sources.list.d/hashicorp.list \
|
|
&& curl -fsSL https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg \
|
|
-o /usr/share/keyrings/proxmox-release-bookworm.gpg \
|
|
&& echo "deb [signed-by=/usr/share/keyrings/proxmox-release-bookworm.gpg] \
|
|
http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
|
|
> /etc/apt/sources.list.d/proxmox-pve.list \
|
|
&& apt-get update && apt-get install -y --no-install-recommends \
|
|
terraform proxmox-auto-install-assistant qemu-utils \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Install Docker CLI (for managing storage containers on the host via mounted socket)
|
|
RUN install -m 0755 -d /etc/apt/keyrings \
|
|
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
|
|
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
|
|
&& chmod a+r /etc/apt/keyrings/docker.gpg \
|
|
&& echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" \
|
|
> /etc/apt/sources.list.d/docker.list \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends docker-ce-cli docker-compose-plugin \
|
|
&& rm -rf /var/lib/apt/lists/*
|