hi
This commit is contained in:
236
docker/Dockerfile
Normal file
236
docker/Dockerfile
Normal file
@@ -0,0 +1,236 @@
|
||||
# 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"]
|
Reference in New Issue
Block a user