Skip to content

Preserve database overrides when seeding a fresh Codespace volume #59

Description

@rmcdaniel

Status Summary

At commit , the development image contains a MariaDB data-directory seed initialized with database , user , and password . The Codespaces Compose topology extracts that initialized directory into every fresh MySQL volume before starting , while still exposing , , and overrides.

MariaDB's official image does not apply its initialization environment variables when the data directory already contains a database. A fresh Codespace using any advertised override therefore starts with the baked identities instead of the requested ones; its health check and application use the requested values and setup cannot reach the successful readiness boundary. The previous empty-volume path applied these overrides during initialization.

How to fix

Preserve the optimized preseed for the default configuration, but retain the existing runtime database override contract. A non-default fresh-volume configuration may use a parameterized seed or explicitly fall back to MariaDB's normal first-volume initialization. Do not rewrite an existing persistent volume or silently reset its credentials.

Add end-to-end Compose coverage for both the default fast path and a fresh volume with non-default database, username, and password. Prove that the application and testing database are usable, migrations are current, a restart preserves user data and credentials, and the checkout remains clean.

Delete when

A fresh Codespace honors all advertised database overrides without sacrificing the default preseed path, persistent-volume restarts preserve data and credentials, and CI protects both configurations.

Metadata

Metadata

Assignees

No one assigned

    Labels

    authority:githubGitHub is the authoritative lifecycle record for this workbeta:compatibleMay be completed without changing the frozen beta contractkind:defectA public product behavior is incorrectpriority:P2Normal-priority product workrepo:sample-appOwned by the sample application repositorystatus:readyReady for implementation

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions