Add docker file
Browse files- .dockerignore +3 -0
- Dockerfile +17 -0
- api/index.py +0 -1
- app/server.py +15 -10
- requirements.txt +3 -2
.dockerignore
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__pycache__
|
| 2 |
+
.checkpoint
|
| 3 |
+
Dockerfile
|
Dockerfile
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM python:3.11
|
| 2 |
+
|
| 3 |
+
WORKDIR /src
|
| 4 |
+
|
| 5 |
+
ADD ./ /src
|
| 6 |
+
|
| 7 |
+
RUN pip install --upgrade pip
|
| 8 |
+
RUN pip install --no-cache-dir -r requirements.txt
|
| 9 |
+
|
| 10 |
+
|
| 11 |
+
# Download Model
|
| 12 |
+
RUN python3 -c 'from app.cloth_segmentation.model import load_seg_model; load_seg_model(".checkpoint/model.pth")'
|
| 13 |
+
|
| 14 |
+
EXPOSE 80
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
CMD ["uvicorn", "app.server:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "80"]
|
api/index.py
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
from app.server import app
|
|
|
|
|
|
app/server.py
CHANGED
|
@@ -1,14 +1,12 @@
|
|
| 1 |
-
from typing import Optional
|
| 2 |
-
from fastapi import FastAPI, UploadFile
|
| 3 |
-
from contextlib import asynccontextmanager
|
| 4 |
-
|
| 5 |
-
from pydantic.dataclasses import dataclass
|
| 6 |
-
from app.cloth_segmentation.model import segment, Mode, load_seg_model, Result, U2NET
|
| 7 |
-
from PIL import Image
|
| 8 |
-
|
| 9 |
-
from base64 import b64encode
|
| 10 |
from io import BytesIO
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
# === DTOs ==
|
| 14 |
|
|
@@ -45,6 +43,13 @@ async def lifespan(app: FastAPI):
|
|
| 45 |
|
| 46 |
|
| 47 |
app = FastAPI(lifespan=lifespan)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 48 |
# === Routes
|
| 49 |
|
| 50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
from io import BytesIO
|
| 2 |
+
from base64 import b64encode
|
| 3 |
+
from PIL import Image
|
| 4 |
+
from app.cloth_segmentation.model import segment, Mode, load_seg_model, Result, U2NET
|
| 5 |
+
from pydantic.dataclasses import dataclass
|
| 6 |
+
from contextlib import asynccontextmanager
|
| 7 |
+
from fastapi.middleware.cors import CORSMiddleware
|
| 8 |
+
from fastapi import FastAPI, UploadFile
|
| 9 |
+
from typing import Optional
|
| 10 |
|
| 11 |
# === DTOs ==
|
| 12 |
|
|
|
|
| 43 |
|
| 44 |
|
| 45 |
app = FastAPI(lifespan=lifespan)
|
| 46 |
+
app.add_middleware(
|
| 47 |
+
CORSMiddleware,
|
| 48 |
+
allow_origins=['*'],
|
| 49 |
+
allow_credentials=True,
|
| 50 |
+
allow_methods=["*"],
|
| 51 |
+
allow_headers=["*"],
|
| 52 |
+
)
|
| 53 |
# === Routes
|
| 54 |
|
| 55 |
|
requirements.txt
CHANGED
|
@@ -1,8 +1,9 @@
|
|
| 1 |
uvicorn==0.23.2
|
| 2 |
fastapi==0.104.1
|
|
|
|
| 3 |
pydantic==2.4.2
|
| 4 |
|
| 5 |
Pillow==9.5.0
|
| 6 |
numpy==1.24.3
|
| 7 |
-
torch==2.
|
| 8 |
-
torchvision
|
|
|
|
| 1 |
uvicorn==0.23.2
|
| 2 |
fastapi==0.104.1
|
| 3 |
+
python-multipart==0.0.6
|
| 4 |
pydantic==2.4.2
|
| 5 |
|
| 6 |
Pillow==9.5.0
|
| 7 |
numpy==1.24.3
|
| 8 |
+
torch==2.0.*
|
| 9 |
+
torchvision
|