# 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