From 41e8e0e5fe9ddf3ed9d08a25aad0fa81c7437161 Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 24 Jan 2024 10:03:40 +0400 Subject: [PATCH 1/3] refactor docker --- Dockerfile | 2 ++ docker-compose.yml | 19 +++++++----- poetry.lock | 12 ++++---- src/__main__.py | 8 ++--- ...dd_field_is_active_and_is_admin_in_user.py | 29 +++++++++++++++++++ src/services/database/models/purchase/item.py | 1 - 6 files changed, 52 insertions(+), 19 deletions(-) create mode 100644 src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py diff --git a/Dockerfile b/Dockerfile index 93cec40..44ce71a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -24,6 +24,8 @@ RUN curl -sSL https://install.python-poetry.org | python3 - WORKDIR $PYSETUP_PATH COPY poetry.lock pyproject.toml ./ +COPY alembic.ini alembic.ini +RUN poetry update WORKDIR src/ diff --git a/docker-compose.yml b/docker-compose.yml index 612c06f..52e4b8e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,4 @@ -version: 3.10.12 - -networks: - app-network: - external: true +version: "3" services: web: @@ -10,7 +6,7 @@ services: volumes: - ./:/usr/src/ working_dir: /usr/src/ - command: sh -c 'alembic upgrade head && python -m src' + command: sh -c 'alembic merge heads && python -m src' networks: - app-network ports: @@ -20,12 +16,13 @@ services: depends_on: - database + database: image: postgres:latest container_name: postgres_container restart: always volumes: - - /home/local_postgres_data:/var/lib/postgresql/data/ + - ./home/local_postgres_data:/var/lib/postgresql/data/ environment: - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASS} @@ -33,4 +30,10 @@ services: networks: - app-network ports: - - "25432:5432" \ No newline at end of file + - "25432:5432" + + + +networks: + app-network: + #external: true \ No newline at end of file diff --git a/poetry.lock b/poetry.lock index 4906f68..c04f626 100644 --- a/poetry.lock +++ b/poetry.lock @@ -484,13 +484,13 @@ files = [ [[package]] name = "mako" -version = "1.3.0" +version = "1.3.1" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." optional = false python-versions = ">=3.8" files = [ - {file = "Mako-1.3.0-py3-none-any.whl", hash = "sha256:57d4e997349f1a92035aa25c17ace371a4213f2ca42f99bee9a602500cfd54d9"}, - {file = "Mako-1.3.0.tar.gz", hash = "sha256:e3a9d388fd00e87043edbe8792f45880ac0114e9c4adc69f6e9bfb2c55e3b11b"}, + {file = "Mako-1.3.1-py3-none-any.whl", hash = "sha256:463f03e04559689adaee25e0967778d6ad41285ed607dc1e7df0dd4e4df81f9e"}, + {file = "Mako-1.3.1.tar.gz", hash = "sha256:baee30b9c61718e093130298e678abed0dbfa1b411fcc4c1ab4df87cd631a0f2"}, ] [package.dependencies] @@ -863,13 +863,13 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] diff --git a/src/__main__.py b/src/__main__.py index 3151034..808b86d 100755 --- a/src/__main__.py +++ b/src/__main__.py @@ -11,8 +11,8 @@ def main() -> None: - uvicorn.run("main:app", host='127.0.0.1', port=8000) + uvicorn.run("main:app", host='127.20.0.1', port=8000) - -if __name__ == "__main__": - main() +# +# if __name__ == "__main__": +main() diff --git a/src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py b/src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py new file mode 100644 index 0000000..deef004 --- /dev/null +++ b/src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py @@ -0,0 +1,29 @@ +"""add field is_active and is_admin in user +Revision ID: c5add1746bb0 +Revises: f78377e221db +Create Date: 2023-12-25 14:20:42.784332 +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'c5add1746bb0' +down_revision: Union[str, None] = 'f78377e221db' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + op.add_column('user', sa.Column('is_active', sa.Boolean(), nullable=False)) + op.add_column('user', sa.Column('is_admin', sa.Boolean(), nullable=False)) + # ### end Alembic commands ### + + +def downgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/src/services/database/models/purchase/item.py b/src/services/database/models/purchase/item.py index 136075a..34b1458 100755 --- a/src/services/database/models/purchase/item.py +++ b/src/services/database/models/purchase/item.py @@ -2,7 +2,6 @@ from sqlalchemy.orm import mapped_column from sqlalchemy.orm import Mapped from sqlalchemy.orm import relationship -from sqlalchemy.types import VARCHAR from src.services.database.models.base import Base From a6c0fab1fa04f664ff5b5d56fc750c0525cbc141 Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 24 Jan 2024 15:10:16 +0400 Subject: [PATCH 2/3] test path in docker --- Dockerfile | 10 +- alembic.ini | 2 +- docker-compose.yml | 3 +- src/__main__.py | 9 +- src/config/setting.py | 6 +- src/middleware/add_midleware.py | 4 +- .../migrations/versions/264223f21244_.py | 26 +++++ .../migrations/versions/723ab2a468c8_.py | 26 +++++ .../migrations/versions/870426e0d6a9_.py | 26 +++++ .../database/migrations/versions/__init__.py | 0 .../versions/a5449e23401d_create_table.py | 104 ------------------ .../migrations/versions/adf7335ac625_.py | 26 +++++ .../migrations/versions/b501628138e6_.py | 26 +++++ .../migrations/versions/c1abee5659ac_.py | 26 +++++ ...dd_field_is_active_and_is_admin_in_user.py | 29 ----- .../migrations/versions/c67afe066d5d_.py | 26 +++++ .../migrations/versions/d8d78dc2c072_.py | 26 +++++ .../migrations/versions/f0d11c41d80a_.py | 26 +++++ 18 files changed, 253 insertions(+), 148 deletions(-) create mode 100644 src/services/database/migrations/versions/264223f21244_.py create mode 100644 src/services/database/migrations/versions/723ab2a468c8_.py create mode 100644 src/services/database/migrations/versions/870426e0d6a9_.py delete mode 100644 src/services/database/migrations/versions/__init__.py delete mode 100644 src/services/database/migrations/versions/a5449e23401d_create_table.py create mode 100644 src/services/database/migrations/versions/adf7335ac625_.py create mode 100644 src/services/database/migrations/versions/b501628138e6_.py create mode 100644 src/services/database/migrations/versions/c1abee5659ac_.py delete mode 100644 src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py create mode 100644 src/services/database/migrations/versions/c67afe066d5d_.py create mode 100644 src/services/database/migrations/versions/d8d78dc2c072_.py create mode 100644 src/services/database/migrations/versions/f0d11c41d80a_.py diff --git a/Dockerfile b/Dockerfile index 44ce71a..d1d9c51 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,8 +25,14 @@ WORKDIR $PYSETUP_PATH COPY poetry.lock pyproject.toml ./ COPY alembic.ini alembic.ini -RUN poetry update +RUN poetry install -WORKDIR src/ +WORKDIR opt/project EXPOSE 8000 + +COPY . . + +WORKDIR src/ + +CMD ["python", "-m src"] \ No newline at end of file diff --git a/alembic.ini b/alembic.ini index e14a614..36c88e9 100755 --- a/alembic.ini +++ b/alembic.ini @@ -2,7 +2,7 @@ [alembic] # path to migration scripts -script_location = src/services/database/migrations +script_location = ./src/services/database/migrations # template used to generate migration file names; The default value is %%(rev)s_%%(slug)s # Uncomment the line below if you want the files to be prepended with date and time diff --git a/docker-compose.yml b/docker-compose.yml index 52e4b8e..bf0f1fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,7 @@ services: build: . volumes: - ./:/usr/src/ - working_dir: /usr/src/ + working_dir: /usr/project/src command: sh -c 'alembic merge heads && python -m src' networks: - app-network @@ -16,7 +16,6 @@ services: depends_on: - database - database: image: postgres:latest container_name: postgres_container diff --git a/src/__main__.py b/src/__main__.py index 808b86d..1269dd9 100755 --- a/src/__main__.py +++ b/src/__main__.py @@ -1,5 +1,6 @@ from fastapi import FastAPI import uvicorn + from src.api.v1 import api from src.middleware.add_midleware import setup_middleware @@ -11,8 +12,8 @@ def main() -> None: - uvicorn.run("main:app", host='127.20.0.1', port=8000) + uvicorn.run("main:app", host='127.17.0.1', port=8000) + -# -# if __name__ == "__main__": -main() +if __name__ == "__main__": + main() diff --git a/src/config/setting.py b/src/config/setting.py index 35a8012..7bc1037 100755 --- a/src/config/setting.py +++ b/src/config/setting.py @@ -3,14 +3,12 @@ from pydantic_settings import BaseSettings, SettingsConfigDict - -PATH_TO_SRC = Path(__file__).parent.parent.parent - +SRC_PATH = Path(__file__).parent.parent.parent class Settings(BaseSettings): model_config = SettingsConfigDict( - env_file=f"{PATH_TO_SRC}/.env", + env_file=f"{SRC_PATH}/.env", env_file_encoding="utf-8", case_sensitive=False ) diff --git a/src/middleware/add_midleware.py b/src/middleware/add_midleware.py index 46e4445..6ae92b7 100755 --- a/src/middleware/add_midleware.py +++ b/src/middleware/add_midleware.py @@ -3,5 +3,5 @@ from src.config.setting import load_auth_jwt -def setup_middleware(app: FastAPI) -> None: - app.add_middleware(SessionMiddleware, secret_key=load_auth_jwt().private_key_path) +def setup_middleware(web: FastAPI) -> None: + web.add_middleware(SessionMiddleware, secret_key=load_auth_jwt().private_key_path) diff --git a/src/services/database/migrations/versions/264223f21244_.py b/src/services/database/migrations/versions/264223f21244_.py new file mode 100644 index 0000000..59b7603 --- /dev/null +++ b/src/services/database/migrations/versions/264223f21244_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: 264223f21244 +Revises: 723ab2a468c8 +Create Date: 2024-01-24 10:11:41.654753 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '264223f21244' +down_revision: Union[str, None] = '723ab2a468c8' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/723ab2a468c8_.py b/src/services/database/migrations/versions/723ab2a468c8_.py new file mode 100644 index 0000000..6f9a4d8 --- /dev/null +++ b/src/services/database/migrations/versions/723ab2a468c8_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: 723ab2a468c8 +Revises: d8d78dc2c072 +Create Date: 2024-01-24 10:10:33.645964 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '723ab2a468c8' +down_revision: Union[str, None] = 'd8d78dc2c072' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/870426e0d6a9_.py b/src/services/database/migrations/versions/870426e0d6a9_.py new file mode 100644 index 0000000..171ac49 --- /dev/null +++ b/src/services/database/migrations/versions/870426e0d6a9_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: 870426e0d6a9 +Revises: f0d11c41d80a +Create Date: 2024-01-24 09:12:21.622232 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '870426e0d6a9' +down_revision: Union[str, None] = 'f0d11c41d80a' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/__init__.py b/src/services/database/migrations/versions/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/services/database/migrations/versions/a5449e23401d_create_table.py b/src/services/database/migrations/versions/a5449e23401d_create_table.py deleted file mode 100644 index 6ee30a6..0000000 --- a/src/services/database/migrations/versions/a5449e23401d_create_table.py +++ /dev/null @@ -1,104 +0,0 @@ -"""create table - -Revision ID: a5449e23401d -Revises: c5add1746bb0 -Create Date: 2024-01-13 23:17:01.836396 - -""" -from typing import Sequence, Union - -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision: str = 'a5449e23401d' -down_revision: Union[str, None] = 'c5add1746bb0' -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None - - -def upgrade() -> None: - # ### commands auto generated by Alembic - please adjust! ### - op.create_table('author', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('name', sa.String(), nullable=False), - sa.Column('surname', sa.String(), nullable=False), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_author_id'), 'author', ['id'], unique=False) - op.create_table('genre', - sa.Column('id', sa.SMALLINT(), nullable=False), - sa.Column('genre', sa.String(), nullable=False), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('genre') - ) - op.create_index(op.f('ix_genre_id'), 'genre', ['id'], unique=False) - op.create_table('user', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('email', sa.String(), nullable=False), - sa.Column('hashed_password', sa.String(), nullable=False), - sa.Column('username', sa.String(), nullable=False), - sa.Column('is_active', sa.Boolean(), nullable=False), - sa.Column('is_admin', sa.Boolean(), nullable=False), - sa.PrimaryKeyConstraint('id'), - sa.UniqueConstraint('email') - ) - op.create_index(op.f('ix_user_id'), 'user', ['id'], unique=False) - op.create_table('book', - sa.Column('ISBN', sa.VARCHAR(length=17), nullable=False), - sa.Column('name_book', sa.VARCHAR(length=50), nullable=False), - sa.Column('author_id', sa.Integer(), nullable=False), - sa.Column('genre_id', sa.SMALLINT(), nullable=False), - sa.Column('publisher', sa.String(), nullable=False), - sa.Column('publication_date', sa.Integer(), nullable=True), - sa.Column('book_circulation', sa.Integer(), nullable=True), - sa.Column('unit_price', sa.DECIMAL(precision=6, scale=2), nullable=False), - sa.Column('weight', sa.Integer(), nullable=True), - sa.Column('rars', sa.String(), nullable=False), - sa.Column('number_of_pages', sa.Integer(), nullable=False), - sa.Column('cover_type', sa.String(), nullable=False), - sa.Column('amount_book', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['author_id'], ['author.id'], ondelete='CASCADE'), - sa.ForeignKeyConstraint(['genre_id'], ['genre.id'], ondelete='CASCADE'), - sa.PrimaryKeyConstraint('ISBN') - ) - op.create_index(op.f('ix_book_name_book'), 'book', ['name_book'], unique=False) - op.create_table('item', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('book_id', sa.VARCHAR(length=17), nullable=False), - sa.Column('amount_item', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['book_id'], ['book.ISBN'], ondelete='CASCADE'), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_item_id'), 'item', ['id'], unique=False) - op.create_table('purchase', - sa.Column('id', sa.Integer(), nullable=False), - sa.Column('delivery_address', sa.String(), nullable=False), - sa.Column('purchase_date', sa.TIMESTAMP(timezone=True), nullable=False), - sa.Column('price', sa.Numeric(), nullable=False), - sa.Column('item_id', sa.Integer(), nullable=False), - sa.Column('user_id', sa.Integer(), nullable=False), - sa.ForeignKeyConstraint(['item_id'], ['item.id'], ondelete='CASCADE'), - sa.ForeignKeyConstraint(['user_id'], ['user.id'], ondelete='CASCADE'), - sa.PrimaryKeyConstraint('id') - ) - op.create_index(op.f('ix_purchase_id'), 'purchase', ['id'], unique=False) - # ### end Alembic commands ### - - -def downgrade() -> None: - # ### commands auto generated by Alembic - please adjust! ### - op.drop_index(op.f('ix_purchase_id'), table_name='purchase') - op.drop_table('purchase') - op.drop_index(op.f('ix_item_id'), table_name='item') - op.drop_table('item') - op.drop_index(op.f('ix_book_name_book'), table_name='book') - op.drop_table('book') - op.drop_index(op.f('ix_user_id'), table_name='user') - op.drop_table('user') - op.drop_index(op.f('ix_genre_id'), table_name='genre') - op.drop_table('genre') - op.drop_index(op.f('ix_author_id'), table_name='author') - op.drop_table('author') - # ### end Alembic commands ### diff --git a/src/services/database/migrations/versions/adf7335ac625_.py b/src/services/database/migrations/versions/adf7335ac625_.py new file mode 100644 index 0000000..cc4c8e1 --- /dev/null +++ b/src/services/database/migrations/versions/adf7335ac625_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: adf7335ac625 +Revises: +Create Date: 2024-01-24 07:17:19.700782 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'adf7335ac625' +down_revision: Union[str, None] = None +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/b501628138e6_.py b/src/services/database/migrations/versions/b501628138e6_.py new file mode 100644 index 0000000..e2c872d --- /dev/null +++ b/src/services/database/migrations/versions/b501628138e6_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: b501628138e6 +Revises: adf7335ac625 +Create Date: 2024-01-24 07:17:54.920996 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'b501628138e6' +down_revision: Union[str, None] = 'adf7335ac625' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/c1abee5659ac_.py b/src/services/database/migrations/versions/c1abee5659ac_.py new file mode 100644 index 0000000..073e97d --- /dev/null +++ b/src/services/database/migrations/versions/c1abee5659ac_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: c1abee5659ac +Revises: c67afe066d5d +Create Date: 2024-01-24 09:19:20.170536 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'c1abee5659ac' +down_revision: Union[str, None] = 'c67afe066d5d' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py b/src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py deleted file mode 100644 index deef004..0000000 --- a/src/services/database/migrations/versions/c5add1746bb0_add_field_is_active_and_is_admin_in_user.py +++ /dev/null @@ -1,29 +0,0 @@ -"""add field is_active and is_admin in user -Revision ID: c5add1746bb0 -Revises: f78377e221db -Create Date: 2023-12-25 14:20:42.784332 -""" -from typing import Sequence, Union - -from alembic import op -import sqlalchemy as sa - - -# revision identifiers, used by Alembic. -revision: str = 'c5add1746bb0' -down_revision: Union[str, None] = 'f78377e221db' -branch_labels: Union[str, Sequence[str], None] = None -depends_on: Union[str, Sequence[str], None] = None - - -def upgrade() -> None: - # ### commands auto generated by Alembic - please adjust! ### - op.add_column('user', sa.Column('is_active', sa.Boolean(), nullable=False)) - op.add_column('user', sa.Column('is_admin', sa.Boolean(), nullable=False)) - # ### end Alembic commands ### - - -def downgrade() -> None: - # ### commands auto generated by Alembic - please adjust! ### - pass - # ### end Alembic commands ### diff --git a/src/services/database/migrations/versions/c67afe066d5d_.py b/src/services/database/migrations/versions/c67afe066d5d_.py new file mode 100644 index 0000000..22bfade --- /dev/null +++ b/src/services/database/migrations/versions/c67afe066d5d_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: c67afe066d5d +Revises: 870426e0d6a9 +Create Date: 2024-01-24 09:16:25.535752 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'c67afe066d5d' +down_revision: Union[str, None] = '870426e0d6a9' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/d8d78dc2c072_.py b/src/services/database/migrations/versions/d8d78dc2c072_.py new file mode 100644 index 0000000..33a2990 --- /dev/null +++ b/src/services/database/migrations/versions/d8d78dc2c072_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: d8d78dc2c072 +Revises: c1abee5659ac +Create Date: 2024-01-24 10:05:46.950554 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'd8d78dc2c072' +down_revision: Union[str, None] = 'c1abee5659ac' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass diff --git a/src/services/database/migrations/versions/f0d11c41d80a_.py b/src/services/database/migrations/versions/f0d11c41d80a_.py new file mode 100644 index 0000000..db04709 --- /dev/null +++ b/src/services/database/migrations/versions/f0d11c41d80a_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: f0d11c41d80a +Revises: b501628138e6 +Create Date: 2024-01-24 07:20:03.387483 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = 'f0d11c41d80a' +down_revision: Union[str, None] = 'b501628138e6' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + pass + + +def downgrade() -> None: + pass From 86a355574deb304de88e180518bbdb8ed98fc643 Mon Sep 17 00:00:00 2001 From: nick Date: Thu, 25 Jan 2024 14:11:55 +0400 Subject: [PATCH 3/3] I can't solve this error: /usr/local/bin/python: No module named src --- Dockerfile | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index d1d9c51..80edff1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -9,30 +9,23 @@ ENV PYTHONUNBUFFERED=1 \ POETRY_HOME="/opt/poetry" \ POETRY_VIRTUALENVS_IN_PROJECT=true \ POETRY_NO_INTERACTION=1 \ - PYSETUP_PATH="/opt/pysetup" \ + PYSETUP_PATH="/opt/app" \ VENV_PATH="/opt/pysetup/.venv" -ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH" +ENV PATH="$POETRY_HOME/bin:$VENV_PATH/bin:$PATH/" RUN apt-get update RUN apt-get install -y postgresql postgresql-contrib gcc python3-dev musl-dev RUN pip install --upgrade pip -COPY certs/ certs/ RUN curl -sSL https://install.python-poetry.org | python3 - + WORKDIR $PYSETUP_PATH COPY poetry.lock pyproject.toml ./ -COPY alembic.ini alembic.ini -RUN poetry install - -WORKDIR opt/project - +RUN poetry install --no-root EXPOSE 8000 - COPY . . -WORKDIR src/ - CMD ["python", "-m src"] \ No newline at end of file