43 lines
1.7 KiB
Docker
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
|