diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/Dockerfile b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/Dockerfile index d6dee13336dee14da1318ef2d9f797d116b618a9..fc939a62c83749e110f85944170e2f1d0e9f92e6 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/Dockerfile +++ b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/Dockerfile @@ -1,21 +1,20 @@ FROM python:3.9.6-slim-buster -RUN apt-get update && apt-get install -y \ - wait-for-it \ - && apt-get clean && rm -rf /var/lib/apt/lists/* RUN pip install poetry==1.1.8 -# Installing requirements +# Configuring poetry RUN poetry config virtualenvs.create false +# Copying requirements of a project COPY pyproject.toml poetry.lock /app/src/ WORKDIR /app/src +# Installing requirements RUN poetry install # Copying actuall application COPY . /app/src/ -RUN pip install --use-feature=in-tree-build . +RUN poetry install CMD ["/usr/local/bin/python", "-m", "{{cookiecutter.project_name}}"] diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/docker-compose.yml b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/docker-compose.yml index 75b861144c95769a6e953a18f51702d9999941a0..6b46853d24e5671a1693250c91ce3aa59587421a 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/docker-compose.yml +++ b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/docker-compose.yml @@ -36,7 +36,6 @@ services: {{cookiecutter.project_name | upper}}_DB_BASE: {{cookiecutter.project_name}} {%- endif %} {%- endif %} - {%- if cookiecutter.db_info.name == "sqlite" %} volumes: - {{cookiecutter.project_name}}-db-data:/db_data/ diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/kube/app.yml b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/kube/app.yml index 2a4ed899463b5f510551ce2f4c393c556af201e0..45d316f9bde96dbc1113bd2126d17530e156f9d6 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/kube/app.yml +++ b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/kube/app.yml @@ -17,11 +17,11 @@ spec: containers: - name: app image: {{cookiecutter.project_name}}:latest - livenessProbe: + readinessProbe: httpGet: path: /api/health port: api-port - initialDelaySeconds: 10 + initialDelaySeconds: 5 periodSeconds: 10 {%- if cookiecutter.db_info.name == "sqlite" %} command: ["/bin/sh"] @@ -37,7 +37,9 @@ spec: {%- endif %} env: - name: {{cookiecutter.project_name | upper }}_HOST - value: 0.0.0.0 + value: "0.0.0.0" + - name: {{cookiecutter.project_name | upper }}_WORKERS_COUNT + value: "10" {%- if cookiecutter.db_info.name != "none" %} {%- if cookiecutter.db_info.name != "sqlite" %} - name: {{cookiecutter.project_name | upper }}_DB_HOST diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml b/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml index 42060ce7919d271f64784c272d3b85f1d2a85995..c3b760d84b5dbce7c40feb2a2ab7c79e65e30aaa 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml +++ b/fastapi_template/template/{{cookiecutter.project_name}}/pyproject.toml @@ -16,6 +16,7 @@ fastapi = "^0.68.0" uvicorn = "^0.15.0" pydantic = {version = "^1.8.2", extras = ["dotenv"]} yarl = "^1.6.3" +ujson = "^4.2.0" {%- if cookiecutter.orm == "sqlalchemy" %} SQLAlchemy = {version = "^1.4", extras = ["mypy", "asyncio"]} {%- elif cookiecutter.orm == "tortoise" %} diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/router.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/router.py index 63f736ffee7a179cb06faf692e965432419171f4..fb2a3b46b120e15136e13ea6bc10d7148742dcd5 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/router.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/api/router.py @@ -23,11 +23,9 @@ api_router.include_router(docs.router) {%- endif %} {%- if cookiecutter.enable_routers == "True" %} api_router.include_router(echo.router, prefix="/echo", tags=["echo"]) -{%- if cookiecutter.db_info.name != "none" %} {%- if cookiecutter.add_dummy == 'True' %} api_router.include_router(dummy.router, prefix="/dummy", tags=["dummy"]) {%- endif %} -{%- endif %} {%- if cookiecutter.enable_redis == "True" %} api_router.include_router(redis.router, prefix="/redis", tags=["redis"]) {%- endif %} diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/application.py b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/application.py index 0731def605363499d2e7815e5bf8353299c60082..cc5e51b634ab1b7e13206eb7f2f2c0f9fd2ec6d8 100644 --- a/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/application.py +++ b/fastapi_template/template/{{cookiecutter.project_name}}/{{cookiecutter.project_name}}/web/application.py @@ -1,4 +1,5 @@ from fastapi import FastAPI +from fastapi.responses import UJSONResponse from {{cookiecutter.project_name}}.web.api.router import api_router from {{cookiecutter.project_name}}.web.lifetime import shutdown, startup @@ -39,6 +40,7 @@ def get_app() -> FastAPI: redoc_url="/api/redoc", {%- endif %} openapi_url="/api/openapi.json", + default_response_class=UJSONResponse, ) app.on_event("startup")(startup(app))