Files
cicd-chaos/docker/Dockerfile
2025-09-13 11:52:42 +03:00

236 lines
6.5 KiB
Docker

# CI/CD Chaos Engine - Over-engineered Docker Container
# This Dockerfile demonstrates professional containerization with satirical over-engineering
# Multi-stage build with excessive optimization
FROM --platform=linux/amd64 alpine:3.18 as base-builder
# Set build arguments with ridiculous defaults
ARG CHAOS_LEVEL=5
ARG ROAST_INTENSITY=7
ARG BUILD_DATE=unknown
ARG GIT_COMMIT=unknown
ARG GIT_BRANCH=unknown
# Install way too many build dependencies
RUN apk add --no-cache \
bash \
curl \
wget \
git \
python3 \
python3-dev \
py3-pip \
py3-setuptools \
py3-wheel \
build-base \
musl-dev \
linux-headers \
openssl-dev \
libffi-dev \
yaml-dev \
json-c-dev \
curl-dev \
ca-certificates \
&& rm -rf /var/cache/apk/*
# Create build directory structure (excessive)
RUN mkdir -p /app/{src,scripts,config,docs,tests,logs,tmp,cache,backups,exports,imports,static,media,templates,data}
# Copy all files (because we're thorough)
COPY . /app/
# Set working directory
WORKDIR /app
# Install Python dependencies with excessive optimization
RUN python3 -m pip install --no-cache-dir --upgrade pip setuptools wheel && \
python3 -m pip install --no-cache-dir \
flask \
fastapi \
uvicorn \
requests \
pyyaml \
click \
rich \
prometheus-client \
structlog \
python-json-logger \
colorama \
tqdm \
psutil \
docker \
kubernetes \
boto3 \
azure-storage-blob \
google-cloud-storage \
redis \
psycopg2-binary \
pymongo \
elasticsearch \
sentry-sdk \
newrelic \
datadog \
slack-sdk \
email-validator \
bcrypt \
cryptography \
jwt \
python-dotenv \
httpx \
aiohttp \
async-timeout \
tenacity \
backoff \
retrying \
pydantic \
marshmallow \
cerberus \
voluptuous \
jsonschema \
tox \
pytest \
pytest-cov \
pytest-mock \
pytest-asyncio \
black \
isort \
flake8 \
mypy \
bandit \
safety \
semgrep \
pre-commit \
shellcheck \
hadolint \
yamllint \
markdownlint-cli2 \
gitlint \
commitizen \
conventional-pre-commit
# Second stage - optimization builder
FROM base-builder as optimizer
# Over-optimization steps
RUN find /usr/local/lib/python3.*/site-packages -name "*.pyc" -delete && \
find /usr/local/lib/python3.*/site-packages -name "*.pyo" -delete && \
find /usr/local/lib/python3.*/site-packages -name "__pycache__" -type d -exec rm -rf {} + 2>/dev/null || true
# Remove unnecessary files (excessive cleanup)
RUN rm -rf /usr/local/lib/python3.*/site-packages/*.egg-info && \
rm -rf /usr/local/lib/python3.*/site-packages/*/tests && \
rm -rf /usr/local/lib/python3.*/site-packages/*/test && \
rm -rf /usr/local/lib/python3.*/site-packages/*/docs && \
rm -rf /usr/local/lib/python3.*/site-packages/*/examples
# Third stage - production build
FROM --platform=linux/amd64 alpine:3.18 as production
# Install only what we actually need (but still overkill)
RUN apk add --no-cache \
bash \
curl \
git \
python3 \
py3-pip \
py3-yaml \
py3-requests \
ca-certificates \
&& rm -rf /var/cache/apk/*
# Create non-root user with excessive configuration
RUN addgroup -g 1001 -S chaos && \
adduser -u 1001 -S chaos -G chaos && \
mkdir -p /app /tmp /var/log/chaos /var/run/chaos && \
chown -R chaos:chaos /app /tmp /var/log/chaos /var/run/chaos
# Copy from optimizer stage
COPY --from=optimizer /usr/local/lib/python3.*/site-packages /usr/local/lib/python3.*/site-packages
COPY --from=optimizer /usr/local/bin /usr/local/bin
# Copy application files
COPY --chown=chaos:chaos . /app/
# Set working directory
WORKDIR /app
# Create directories with excessive permissions
RUN mkdir -p /app/{scripts,config,logs,reports,artifacts,docs,cache,tmp} && \
chmod -R 755 /app && \
chmod -R 777 /app/{logs,cache,tmp}
# Set environment variables (over-engineered)
ENV CHAOS_LEVEL=${CHAOS_LEVEL:-5}
ENV ROAST_INTENSITY=${ROAST_INTENSITY:-7}
ENV CELEBRATION_MODE="full"
ENV DEVELOPER_CHALLENGE="true"
ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONPATH=/app
ENV LOG_LEVEL=INFO
ENV CHAOS_HOME=/app
ENV CHAOS_CONFIG=/app/config
ENV CHAOS_LOGS=/app/logs
ENV CHAOS_CACHE=/app/cache
ENV CHAOS_TMP=/app/tmp
ENV CHAOS_ARTIFACTS=/app/artifacts
ENV BUILD_DATE=${BUILD_DATE}
ENV GIT_COMMIT=${GIT_COMMIT}
ENV GIT_BRANCH=${GIT_BRANCH}
ENV CONTAINER_VERSION=1.0.0
ENV CONTAINER_BUILD=production
ENV HEALTH_CHECK_ENABLED=true
ENV METRICS_ENABLED=true
ENV TRACING_ENABLED=true
ENV DEBUG_MODE=false
ENV PRODUCTION_MODE=true
# Install entrypoint script
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
# Create health check script
RUN echo '#!/bin/bash' > /app/healthcheck.sh && \
echo 'echo "🎪 CI/CD Chaos Container Health Check"' >> /app/healthcheck.sh && \
echo 'echo "Chaos Level: $CHAOS_LEVEL"' >> /app/healthcheck.sh && \
echo 'echo "Status: Operating with maximum chaos"' >> /app/healthcheck.sh && \
echo 'exit 0' >> /app/healthcheck.sh && \
chmod +x /app/healthcheck.sh
# Expose ports (overkill for this application)
EXPOSE 8080 9090 3000 5000 80 443
# Add labels (excessive metadata)
LABEL maintainer="CI/CD Chaos Team <chaos@example.com>" \
version="1.0.0" \
description="CI/CD Chaos Engine - Over-engineered DevOps Satire" \
chaos.level="${CHAOS_LEVEL}" \
roast.intensity="${ROAST_INTENSITY}" \
build.date="${BUILD_DATE}" \
git.commit="${GIT_COMMIT}" \
git.branch="${GIT_BRANCH}" \
architecture="amd64" \
os="alpine" \
python.version="3.11" \
docker.version="24.0" \
compliance="SOC2,ISO27001,GDPR,HIPAA" \
security.scan.date="2024-01-01" \
quality.gate="passed" \
test.coverage="98.5%" \
performance.rating="excellent"
# Health check (excessive but professional)
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
CMD ["/app/healthcheck.sh"]
# Volumes (excessive for this use case)
VOLUME ["/app/logs", "/app/cache", "/app/tmp", "/app/artifacts"]
# Switch to non-root user
USER chaos
# Entry point with excessive ceremony
ENTRYPOINT ["/entrypoint.sh"]
# Default command
CMD ["python3", "-m", "http.server", "8080", "--directory", "/app"]