Browse Source

replace PostgreSQL with SQLite and reduce docker image size

chenhaiyang 2 years ago
parent
commit
51fe0937cf
5 changed files with 27 additions and 22 deletions
  1. 3 0
      .gitignore
  2. 7 9
      Dockerfile
  3. 8 4
      app/db/session.py
  4. 1 1
      docker-compose.yml
  5. 8 8
      requirements.txt

+ 3 - 0
.gitignore

@@ -137,3 +137,6 @@ dmypy.json
 
 # Machine learning models
 ml_models/
+
+# SQLite file
+*.db

+ 7 - 9
Dockerfile

@@ -1,21 +1,19 @@
-FROM python:3.10
+FROM python:3.10-slim
 
 WORKDIR /code
 
 COPY ./requirements.txt /code/requirements.txt
-
-RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
-
 COPY ./app /code/app
+COPY .env_pro /code/.env
 
-RUN mkdir -p /code/ml_models
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    build-essential && \
+    pip install --no-cache-dir --upgrade -r /code/requirements.txt && \
+    mkdir -p /code/ml_models
 
 ENV PYTHONPATH=/code
+ENV TZ=Asia/Shanghai
 
 EXPOSE 8002
 
-COPY .env_pro /code/.env
-
-ENV TZ=Asia/Shanghai
-
 CMD ["uvicorn", "app.main:app", "--log-level", "info", "--host", "0.0.0.0", "--port", "8002"]

+ 8 - 4
app/db/session.py

@@ -4,11 +4,15 @@ from sqlalchemy.orm import sessionmaker
 
 from app.core.config import settings
 
+SQLALCHEMY_DATABASE_URL = "sqlite:///./sql_app.db"
+
 engine = create_engine(
-    settings.SQLALCHEMY_DATABASE_URL,
-    pool_pre_ping=True,
-    pool_size=1000,
-    max_overflow=2000,
+    SQLALCHEMY_DATABASE_URL,
+    connect_args={"check_same_thread": False},
+    # settings.SQLALCHEMY_DATABASE_URL,
+    # pool_pre_ping=True,
+    # pool_size=1000,
+    # max_overflow=2000,
 )
 SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
 

+ 1 - 1
docker-compose.yml

@@ -2,7 +2,7 @@ version: "3"
 
 services:
   app:
-      image: registry.persagy.com/sagacloud/saga_algo_api:0.5.14
+      image: registry.persagy.com/sagacloud/saga_algo_api:0.5.15
       container_name: saga_algo_api
       ports:
         - "8002:8002"

+ 8 - 8
requirements.txt

@@ -5,7 +5,7 @@ certifi==2022.6.15
 charset-normalizer==2.1.0
 click==8.1.3
 Deprecated==1.2.13
-fastapi==0.85.0
+fastapi==0.85.2
 grpcio==1.47.0
 grpcio-tools==1.47.0
 h11==0.12.0
@@ -15,12 +15,12 @@ idna==3.3
 joblib==1.1.0
 loguru==0.6.0
 mmh3==3.0.0
-numpy==1.23.3
+numpy==1.23.4
 packaging==21.3
-pandas==1.4.4
+pandas==1.5.1
 protobuf==3.20.1
 psycopg2-binary==2.9.3
-pydantic==1.9.2
+pydantic==1.10.2
 pymilvus==2.1.3
 pyparsing==3.0.9
 python-dateutil==2.8.2
@@ -29,16 +29,16 @@ pytz==2022.2.1
 redis==4.3.4
 requests==2.28.1
 rfc3986==1.5.0
-scikit-learn==1.1.2
+scikit-learn==1.1.3
 scipy==1.9.0
 six==1.16.0
 sniffio==1.2.0
-SQLAlchemy==1.4.41
+SQLAlchemy==1.4.42
 starlette==0.20.4
-tencentcloud-sdk-python==3.0.733
+tencentcloud-sdk-python==3.0.763
 threadpoolctl==3.1.0
 typing_extensions==4.3.0
 ujson==5.4.0
 urllib3==1.26.11
-uvicorn==0.18.3
+uvicorn==0.19.0
 wrapt==1.14.1