diff --git a/{{cookiecutter.project_slug}}/backend/app/alembic.ini b/{{cookiecutter.project_slug}}/backend/app/alembic.ini index 61bc2fd..921aaf1 100755 --- a/{{cookiecutter.project_slug}}/backend/app/alembic.ini +++ b/{{cookiecutter.project_slug}}/backend/app/alembic.ini @@ -35,9 +35,6 @@ script_location = alembic # are written from script.py.mako # output_encoding = utf-8 -sqlalchemy.url = postgresql://postgres:{{cookiecutter.postgres_password}}@db/app - - # Logging configuration [loggers] keys = root,sqlalchemy,alembic diff --git a/{{cookiecutter.project_slug}}/backend/app/alembic/env.py b/{{cookiecutter.project_slug}}/backend/app/alembic/env.py index ae47ee5..df37198 100755 --- a/{{cookiecutter.project_slug}}/backend/app/alembic/env.py +++ b/{{cookiecutter.project_slug}}/backend/app/alembic/env.py @@ -1,4 +1,7 @@ from __future__ import with_statement + +import os + from alembic import context from sqlalchemy import engine_from_config, pool from logging.config import fileConfig @@ -27,6 +30,14 @@ target_metadata = Base.metadata # ... etc. +def get_url(): + user = os.getenv("POSTGRES_USER", "postgres") + password = os.getenv("POSTGRES_PASSWORD", "") + server = os.getenv("POSTGRES_SERVER", "db") + db = os.getenv("POSTGRES_DB", "app") + return f"postgresql://{user}:{password}@{server}/{db}" + + def run_migrations_offline(): """Run migrations in 'offline' mode. @@ -39,7 +50,7 @@ def run_migrations_offline(): script output. """ - url = config.get_main_option("sqlalchemy.url") + url = get_url() context.configure( url=url, target_metadata=target_metadata, literal_binds=True, compare_type=True ) @@ -55,8 +66,10 @@ def run_migrations_online(): and associate a connection with the context. """ + configuration = config.get_section(config.config_ini_section) + configuration['sqlalchemy.url'] = get_url() connectable = engine_from_config( - config.get_section(config.config_ini_section), + configuration, prefix="sqlalchemy.", poolclass=pool.NullPool, )