Collection of Dockerfile Configuration
Go API
# Stage 1: BuilderFROM golang:1.24 AS builder
WORKDIR /go/src/app
COPY . .
RUN go mod download
RUN CGO_ENABLED=0 go build -o /go/bin/app
# Stage 2: Final runtimeFROM golang:1.24-alpine
COPY --from=builder /go/bin/app /
EXPOSE 8081
ENV PORT 8081
CMD ["/app"]
FastAPI
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y \ build-essential \ curl \ software-properties-common \ && rm -rf /var/lib/apt/lists/*
COPY requirements-api.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
Flask
FROM python:3.12-slim
ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ TZ=Asia/Jakarta
WORKDIR /app
COPY requirements.txt .RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8080CMD ["python", "app.py"]
Multi Stage
# Stage 1: BuilderFROM python:3.12-slim AS builder
ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ TZ=Asia/Jakarta
WORKDIR /app
# Install dependencies build essentialsRUN apt-get update && apt-get install -y --no-install-recommends \ build-essential gcc \ && rm -rf /var/lib/apt/lists/*
# Install Python dependenciesCOPY requirements.txt .RUN pip install --user --no-cache-dir -r requirements.txt
# Stage 2: Final runtimeFROM python:3.12-slim AS runtime
ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ TZ=Asia/Jakarta
WORKDIR /app
# Copy dependencies from builderCOPY --from=builder /root/.local /root/.localENV PATH=/root/.local/bin:$PATH
# Copy source codeCOPY . .
EXPOSE 8080CMD ["python", "app.py"]
Streamlit App
FROM python:3.12-slim
WORKDIR /usr/src/app
RUN apt-get update && apt-get install -y \ build-essential \ curl \ software-properties-common \ && rm -rf /var/lib/apt/lists/*
COPY requirements-dashboard.txt requirements.txt
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8501
HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health
ENTRYPOINT ["streamlit", "run", "app.py", "--server.port=8501", "--server.address=0.0.0.0"]