feat: add docker integration

This commit is contained in:
Jeremy Yin 2024-03-18 16:18:32 +08:00
parent 3e1c784814
commit 4642360dcb
5 changed files with 66 additions and 2 deletions

View File

@ -4,3 +4,6 @@ MONGO_USERNAME=
MONGO_PASSWORD= MONGO_PASSWORD=
OPENROUTER_API_KEY= OPENROUTER_API_KEY=
SENTRY_DSN= SENTRY_DSN=
VIRTUAL_HOST=
LETSENCRYPT_HOST=
LETSENCRYPT_EMAIL=

10
Dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM python:3.12
RUN curl -sSL https://pdm-project.org/install-pdm.py | python3 -
WORKDIR /app
ADD pdm.lock /app
RUN pdm install

25
docker-compose.yml Normal file
View File

@ -0,0 +1,25 @@
version: "3"
services:
simplylab:
build:
dockerfile: Dockerfile
context: .
restart: always
command: gunicorn simplylab.main:app --workers=4 --worker-class=uvicorn.workers.UvicornWorker --bind=0.0.0.0:8000 --worker-tmp-dir /dev/shm --log-level=debug
environment:
TZ: "Asia/Shanghai"
VIRTUAL_HOST: ${VIRTUAL_HOST}
LETSENCRYPT_HOST: ${LETSENCRYPT_HOST}
LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL}
expose:
- 8000
tty: true
stdin_open: true
networks:
- simplylab
logging:
driver: "json-file"
options:
max-size: "2m"
max-file: "10"

View File

@ -5,7 +5,7 @@
groups = ["default"] groups = ["default"]
strategy = ["cross_platform", "inherit_metadata"] strategy = ["cross_platform", "inherit_metadata"]
lock_version = "4.4.1" lock_version = "4.4.1"
content_hash = "sha256:68aec295b130841c79040d9aae40daa7c15c204a7b5756850923308c9460d5b4" content_hash = "sha256:64230f6c1194c02cb0bf18c190ac2a97d0a50add0cd0697a8c770b3ea68a7cf9"
[[package]] [[package]]
name = "annotated-types" name = "annotated-types"
@ -108,6 +108,20 @@ files = [
{file = "fastapi-0.110.0.tar.gz", hash = "sha256:266775f0dcc95af9d3ef39bad55cff525329a931d5fd51930aadd4f428bf7ff3"}, {file = "fastapi-0.110.0.tar.gz", hash = "sha256:266775f0dcc95af9d3ef39bad55cff525329a931d5fd51930aadd4f428bf7ff3"},
] ]
[[package]]
name = "gunicorn"
version = "21.2.0"
requires_python = ">=3.5"
summary = "WSGI HTTP Server for UNIX"
groups = ["default"]
dependencies = [
"packaging",
]
files = [
{file = "gunicorn-21.2.0-py3-none-any.whl", hash = "sha256:3213aa5e8c24949e792bcacfc176fef362e7aac80b76c56f6b5122bf350722f0"},
{file = "gunicorn-21.2.0.tar.gz", hash = "sha256:88ec8bff1d634f98e61b9f65bc4bf3cd918a90806c6f5c48bc5603849ec81033"},
]
[[package]] [[package]]
name = "h11" name = "h11"
version = "0.14.0" version = "0.14.0"
@ -212,6 +226,17 @@ files = [
{file = "openai-1.14.0.tar.gz", hash = "sha256:e287057adf0ec3315abc32ddcc968d095879abd9b68bf51c0402dab13ab5ae9b"}, {file = "openai-1.14.0.tar.gz", hash = "sha256:e287057adf0ec3315abc32ddcc968d095879abd9b68bf51c0402dab13ab5ae9b"},
] ]
[[package]]
name = "packaging"
version = "24.0"
requires_python = ">=3.7"
summary = "Core utilities for Python packages"
groups = ["default"]
files = [
{file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"},
{file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"},
]
[[package]] [[package]]
name = "pydantic" name = "pydantic"
version = "2.6.4" version = "2.6.4"

View File

@ -15,6 +15,7 @@ dependencies = [
"motor>=3.3.2", "motor>=3.3.2",
"sentry-sdk>=1.42.0", "sentry-sdk>=1.42.0",
"pydantic-mongo>=2.1.2", "pydantic-mongo>=2.1.2",
"gunicorn>=21.2.0",
] ]
requires-python = "==3.12.*" requires-python = "==3.12.*"
readme = "README.md" readme = "README.md"