AS400_API_DOTNET/.devcontainer/Dockerfile
2025-10-17 16:01:56 +07:00

43 lines
1.7 KiB
Docker

# .NET 9 SDK (use 8.0 if your solution targets 8)
# Force amd64 so IBM i Access RPM can be installed even on Apple Silicon hosts.
FROM --platform=linux/amd64 mcr.microsoft.com/dotnet/sdk:9.0
# Java runtime is required by Sonar
RUN apt-get update && apt-get install -y --no-install-recommends \
openjdk-17-jre-headless curl ca-certificates git unzip gnupg \
unixodbc unixodbc-dev alien \
&& rm -rf /var/lib/apt/lists/*
# Node.js 20.x is required by SonarLint for VS Code
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get update \
&& apt-get install -y --no-install-recommends nodejs \
&& rm -rf /var/lib/apt/lists/*
# Install IBM i Access ODBC driver when the RPM is present in the repo
COPY drivers/ /tmp/drivers/
RUN set -ex; \
if ls /tmp/drivers/ibm-iaccess-*.rpm.disabled >/dev/null 2>&1; then \
for f in /tmp/drivers/ibm-iaccess-*.rpm.disabled; do mv "$f" "${f%.disabled}"; done; \
fi
RUN set -ex; \
if ls /tmp/drivers/ibm-iaccess-*.rpm >/dev/null 2>&1; then \
for f in /tmp/drivers/ibm-iaccess-*.rpm; do alien -i --scripts "$f"; done; \
else \
echo ">> IBM i Access ODBC RPM not found in /tmp/drivers. ODBC connections will fail until it is added."; \
fi
# Register ODBC driver/DSN so unixODBC knows about the IBM driver
COPY docker/odbc/odbcinst.ini /etc/odbcinst.ini
COPY docker/odbc/odbc.ini /etc/odbc.ini
# Global tools: dotnet-sonarscanner (+ coverlet for coverage)
RUN dotnet tool install --global dotnet-sonarscanner \
&& dotnet tool install --global coverlet.console
ENV PATH="${PATH}:/root/.dotnet/tools"
# Non-root user (Dev Containers convention)
RUN useradd -ms /bin/bash vscode
USER vscode
WORKDIR /workspaces