From cb03f94d2fafeb51ac55544ba4a2f612bd9b7dee Mon Sep 17 00:00:00 2001
From: Pavel <win10@list.ru>
Date: Mon, 4 Oct 2021 01:28:34 +0400
Subject: [PATCH] Fixed Dockerfile and k8s configs.

Signed-off-by: Pavel <win10@list.ru>
---
 .../{{cookiecutter.project_name}}/deploy/Dockerfile      | 9 ++++-----
 .../deploy/docker-compose.yml                            | 1 -
 .../{{cookiecutter.project_name}}/deploy/kube/app.yml    | 8 +++++---
 .../{{cookiecutter.project_name}}/pyproject.toml         | 1 +
 .../{{cookiecutter.project_name}}/web/api/router.py      | 2 --
 .../{{cookiecutter.project_name}}/web/application.py     | 2 ++
 6 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/fastapi_template/template/{{cookiecutter.project_name}}/deploy/Dockerfile b/fastapi_template/template/{{cookiecutter.project_name}}/deploy/Dockerfile
index d6dee13..fc939a6 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 75b8611..6b46853 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 2a4ed89..45d316f 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 42060ce..c3b760d 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 63f736f..fb2a3b4 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 0731def..cc5e51b 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))
-- 
GitLab