From da6b3afbdd0933d593b0456829aa3caaf8f4eca0 Mon Sep 17 00:00:00 2001 From: seoiiwon Date: Sun, 15 Jun 2025 10:29:49 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=94=A8=20refactor:=20alembic=20revisi?= =?UTF-8?q?on=20=EB=B0=98=EC=98=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 1 + alembic.ini | 2 +- ...dd8fe7e3_add_monthly_study_date_to_user.py | 34 +++++++++++++++++++ alembic/versions/__init__.py | 0 alembic/versions/e41ef1fb1ba4_base.py | 21 ++++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 alembic/versions/4e97dd8fe7e3_add_monthly_study_date_to_user.py create mode 100644 alembic/versions/__init__.py create mode 100644 alembic/versions/e41ef1fb1ba4_base.py diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index edf8752..6c754b3 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -62,4 +62,5 @@ jobs: aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ env.ECR_REGISTRY }} docker-compose -f docker-compose.prod.yml down docker-compose -f docker-compose.prod.yml pull + docker-compose -f docker-compose.prod.yml run --rm app alembic upgrade head docker-compose -f docker-compose.prod.yml up -d \ No newline at end of file diff --git a/alembic.ini b/alembic.ini index 4f0b631..f182412 100644 --- a/alembic.ini +++ b/alembic.ini @@ -63,7 +63,7 @@ version_path_separator = os # are written from script.py.mako # output_encoding = utf-8 -;sqlalchemy.url = +sqlalchemy.url = [post_write_hooks] # post_write_hooks defines scripts or Python functions that are run diff --git a/alembic/versions/4e97dd8fe7e3_add_monthly_study_date_to_user.py b/alembic/versions/4e97dd8fe7e3_add_monthly_study_date_to_user.py new file mode 100644 index 0000000..13f3456 --- /dev/null +++ b/alembic/versions/4e97dd8fe7e3_add_monthly_study_date_to_user.py @@ -0,0 +1,34 @@ +"""add monthly_study_date to user + +Revision ID: 4e97dd8fe7e3 +Revises: e41ef1fb1ba4 +Create Date: 2025-06-15 10:21:57.464451 +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '4e97dd8fe7e3' +down_revision = 'e41ef1fb1ba4' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + 'user', + sa.Column( + 'monthly_study_date', + sa.JSON(), + nullable=True, + comment="학습한 날짜" + ) + ) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column('user', 'monthly_study_date') + # ### end Alembic commands ### \ No newline at end of file diff --git a/alembic/versions/__init__.py b/alembic/versions/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/alembic/versions/e41ef1fb1ba4_base.py b/alembic/versions/e41ef1fb1ba4_base.py new file mode 100644 index 0000000..ce9a2db --- /dev/null +++ b/alembic/versions/e41ef1fb1ba4_base.py @@ -0,0 +1,21 @@ +"""stub baseline for existing DB + +Revision ID: e41ef1fb1ba4 +Revises: +Create Date: 2025-06-13 12:00:00 +""" +from alembic import op +import sqlalchemy as sa + +# 리비전 식별자 +revision = 'e41ef1fb1ba4' +down_revision = None +branch_labels = None +depends_on = None + +def upgrade(): + # 이 stub 에선 아무 작업도 하지 않습니다. + pass + +def downgrade(): + pass \ No newline at end of file From b25e941293df252f5e042f01957f92e6a6052664 Mon Sep 17 00:00:00 2001 From: seoiiwon Date: Sun, 15 Jun 2025 10:50:57 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=94=A8=20refactpr:=20db=20prod=20?= =?UTF-8?q?=EB=B6=84=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 3 ++- alembic/env.py | 2 +- database/session.py | 7 ++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 6c754b3..f1518a6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -60,7 +60,8 @@ jobs: key: ${{ secrets.EC2_SSH_KEY }} script: | aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ env.ECR_REGISTRY }} + cp ~/app-path/.env.prod ./.env docker-compose -f docker-compose.prod.yml down docker-compose -f docker-compose.prod.yml pull - docker-compose -f docker-compose.prod.yml run --rm app alembic upgrade head + docker-compose -f docker-compose.prod.yml run --rm -e MODE=prod fastapi alembic upgrade head docker-compose -f docker-compose.prod.yml up -d \ No newline at end of file diff --git a/alembic/env.py b/alembic/env.py index 0dbc7fe..9b24010 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -19,7 +19,7 @@ DB_USER = os.getenv("DB_USER") DB_PASSWORD = quote_plus(os.getenv("DB_PASSWORD")) -DB_URL = os.getenv("DB_URL") +DB_URL = os.getenv("DB_HOST") DB_PORT = os.getenv("DB_PORT") DB_NAME = os.getenv("DB_NAME") diff --git a/database/session.py b/database/session.py index 1203661..b74ae62 100644 --- a/database/session.py +++ b/database/session.py @@ -3,7 +3,12 @@ from dotenv import load_dotenv import os -load_dotenv(".env.dev") +MODE = os.getenv("MODE", "dev") +if MODE == "dev": + load_dotenv(".env.dev") +elif MODE == "prod": + pass + user = os.getenv("DB_USER", "") password = quote_plus(os.getenv("DB_PASSWORD", "")) host = os.getenv("DB_HOST", "") From 9266b051838d2596ea8ffd4da1a6ee92a58277c7 Mon Sep 17 00:00:00 2001 From: seoiiwon Date: Sun, 15 Jun 2025 11:00:50 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=94=A8=20refactpr:=20db=20host=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- alembic/env.py | 2 +- database/session.py | 2 +- docker-compose.prod.yml | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/alembic/env.py b/alembic/env.py index 9b24010..0dbc7fe 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -19,7 +19,7 @@ DB_USER = os.getenv("DB_USER") DB_PASSWORD = quote_plus(os.getenv("DB_PASSWORD")) -DB_URL = os.getenv("DB_HOST") +DB_URL = os.getenv("DB_URL") DB_PORT = os.getenv("DB_PORT") DB_NAME = os.getenv("DB_NAME") diff --git a/database/session.py b/database/session.py index b74ae62..76961b9 100644 --- a/database/session.py +++ b/database/session.py @@ -11,7 +11,7 @@ user = os.getenv("DB_USER", "") password = quote_plus(os.getenv("DB_PASSWORD", "")) -host = os.getenv("DB_HOST", "") +host = (os.getenv("DB_HOST") or os.getenv("DB_URL") or "") port = os.getenv("DB_PORT", "") database = os.getenv("DB_NAME", "") diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 4ed1ea1..9ff274a 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -11,4 +11,6 @@ services: ports: - "8080:8080" env_file: - - .env.prod \ No newline at end of file + - .env.prod + environment: + - MODE=prod \ No newline at end of file