50 lines
1.5 KiB
Docker
50 lines
1.5 KiB
Docker
# devops/docker/schema-versions/Dockerfile
|
|
# Versioned PostgreSQL container for schema evolution testing
|
|
# Sprint: SPRINT_20260105_002_005_TEST_cross_cutting
|
|
# Task: CCUT-008
|
|
#
|
|
# USAGE:
|
|
# ======
|
|
# Build for specific module and version:
|
|
# docker build --build-arg MODULE=scanner --build-arg SCHEMA_VERSION=v1.2.0 \
|
|
# -t stellaops/schema-test:scanner-v1.2.0 .
|
|
#
|
|
# Run for testing:
|
|
# docker run -d -p 5432:5432 stellaops/schema-test:scanner-v1.2.0
|
|
|
|
ARG POSTGRES_VERSION=16
|
|
FROM postgres:${POSTGRES_VERSION}-alpine
|
|
|
|
# Build arguments
|
|
ARG MODULE=scanner
|
|
ARG SCHEMA_VERSION=latest
|
|
ARG SCHEMA_DATE=""
|
|
|
|
# Labels for identification
|
|
LABEL org.opencontainers.image.title="StellaOps Schema Test - ${MODULE}"
|
|
LABEL org.opencontainers.image.description="PostgreSQL with ${MODULE} schema version ${SCHEMA_VERSION}"
|
|
LABEL org.opencontainers.image.version="${SCHEMA_VERSION}"
|
|
LABEL org.stellaops.module="${MODULE}"
|
|
LABEL org.stellaops.schema.version="${SCHEMA_VERSION}"
|
|
LABEL org.stellaops.schema.date="${SCHEMA_DATE}"
|
|
|
|
# Environment variables
|
|
ENV POSTGRES_USER=stellaops_test
|
|
ENV POSTGRES_PASSWORD=test_password
|
|
ENV POSTGRES_DB=stellaops_schema_test
|
|
ENV STELLAOPS_MODULE=${MODULE}
|
|
ENV STELLAOPS_SCHEMA_VERSION=${SCHEMA_VERSION}
|
|
|
|
# Copy initialization scripts
|
|
COPY docker-entrypoint-initdb.d/ /docker-entrypoint-initdb.d/
|
|
|
|
# Copy module-specific schema
|
|
COPY schemas/${MODULE}/ /schemas/${MODULE}/
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=10s --timeout=5s --start-period=30s --retries=3 \
|
|
CMD pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB} || exit 1
|
|
|
|
# Expose PostgreSQL port
|
|
EXPOSE 5432
|