diff --git a/Makefile b/Makefile index 5482777..6b445a1 100644 --- a/Makefile +++ b/Makefile @@ -13,20 +13,10 @@ install-dev: $(VENV_DIR)/bin/pip install -r $(REQ_FILE) -r requirements-dev.txt start: - docker compose up -d db - @echo "Waiting for the database to be ready..." - @while ! nc -z localhost 5432; do \ - sleep 1; \ - done - uvicorn backend.app.main:app --reload --host 0.0.0.0 --port 8080 --reload-include backend/app - -start-db: - docker-compose up -d db - -stop-db: - docker-compose down + docker compose up clean-db: + docker compose down docker compose down -v db clean: diff --git a/backend/Dockerfile b/backend/Dockerfile index d70e01d..c17ea5c 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,20 +1,13 @@ -# Use the official Python image from the Docker Hub FROM python:3.9-slim -# Set the working directory in the container -WORKDIR /app +WORKDIR /code +COPY ./requirements.txt /code/requirements.txt -# Copy the pyproject.toml file to the container -COPY pyproject.toml ./ +RUN pip install --no-cache-dir -r requirements.txt -# Install the dependencies using pyproject.toml -RUN pip install --no-cache-dir . +COPY ./app /code/app +COPY .env /code/.env -# Copy the rest of the application code to the container -COPY . . +EXPOSE 8080 -# Expose the port the app runs on -EXPOSE 8000 - -# Command to run the application -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file +CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"] \ No newline at end of file diff --git a/backend/app/providers/db_provider.py b/backend/app/providers/db_provider.py index a0a0f77..a20d43c 100644 --- a/backend/app/providers/db_provider.py +++ b/backend/app/providers/db_provider.py @@ -21,7 +21,7 @@ settings = get_settings() async def _get_async_engine() -> AsyncEngine: return create_async_engine( - f"postgresql+asyncpg://{settings.db.username}:{settings.db.password}@localhost/{settings.db.db_name}", + f"postgresql+asyncpg://{settings.db.username}:{settings.db.password}@{settings.db.host}:{settings.db.port}/{settings.db.db_name}", future=True, ) @@ -54,7 +54,7 @@ async def get_connection() -> AsyncGenerator[AsyncConnection, None]: def _get_engine() -> Engine: return create_engine( - f"postgresql+pg8000://{settings.db.username}:{settings.db.password}@localhost/{settings.db.db_name}" + f"postgresql+pg8000://{settings.db.username}:{settings.db.password}@{settings.db.host}:{settings.db.port}/{settings.db.db_name}" ) diff --git a/backend/app/settings.py b/backend/app/settings.py index 1ca91c7..90df875 100644 --- a/backend/app/settings.py +++ b/backend/app/settings.py @@ -19,6 +19,8 @@ class _DbSettings(_BaseConfig): username: str = Field(default=os.getenv("PG_USER")) password: str = Field(default=os.getenv("PG_PASSWORD")) db_name: str = Field(default=os.getenv("PG_DB_NAME")) + host: str = Field(default=os.getenv("PG_HOST")) + port: int = Field(default=os.getenv("PG_PORT")) class _Settings(_BaseConfig): diff --git a/backend/requirements.txt b/backend/requirements.txt index c381ad5..746ecc4 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -4,4 +4,5 @@ sqlmodel pydantic sqlalchemy pydantic-settings -python-dotenv \ No newline at end of file +python-dotenv +pg8000 diff --git a/docker-compose.yml b/docker-compose.yml index e9d5967..3fd2d6d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,13 +1,20 @@ version: '3.8' services: - web: - build: . + backend: + build: + context: ./backend ports: - - "8000:8000" + - "8080:8080" environment: - - ENV=production - command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] + - ENVIRONMENT=development + - PG_HOST=db + - PG_PORT=5432 + command: ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080", "--reload"] + volumes: + - ./backend/app:/code/app + depends_on: + - db db: image: postgres:15