Bugfixes in docker-compose and DB, gunicorn for prod, env vars for app host and port
This commit is contained in:
parent
2135126235
commit
71964355b7
8 changed files with 43 additions and 5 deletions
3
.env
3
.env
|
@ -1,3 +1,6 @@
|
|||
APP_HOST=0.0.0.0
|
||||
APP_PORT=8000
|
||||
|
||||
DB_HOST=${REPO_NAME_SNAKE}_db
|
||||
DB_PORT=3306
|
||||
DB_USER=${REPO_NAME_SNAKE}
|
||||
|
|
2
.env_db
2
.env_db
|
@ -1,5 +1,5 @@
|
|||
MYSQL_HOST=${REPO_NAME_SNAKE}_db
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_RANDOM_ROOT_PASSWORD=true
|
||||
MYSQL_USER=${REPO_NAME_SNAKE}
|
||||
MYSQL_PASSWORD=
|
||||
MYSQL_DATABASE=${REPO_NAME_SNAKE}
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
DEBUG=true
|
||||
|
||||
SESSION_KEY=debug
|
||||
CSRF_KEY=debug
|
||||
|
||||
APP_HOST=127.0.0.1
|
||||
APP_PORT=8000
|
||||
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3306
|
||||
DB_USER=darkcat09
|
||||
|
|
15
Makefile
15
Makefile
|
@ -1,9 +1,14 @@
|
|||
APP_HOST ?= 0.0.0.0
|
||||
APP_PORT ?= 8000
|
||||
|
||||
dev:
|
||||
python3 -m dotenv -f .env_debug run \
|
||||
python3 -m uvicorn main:app --reload
|
||||
make cmd-dev
|
||||
|
||||
prod:
|
||||
python3 -m uvicorn main:app
|
||||
python3 -m gunicorn \
|
||||
-w 4 -k uvicorn.workers.UvicornWorker \
|
||||
-b $${APP_HOST}:$${APP_PORT} main:app
|
||||
|
||||
format:
|
||||
python3 -m autopep8 -r --in-place app/
|
||||
|
@ -30,6 +35,12 @@ clean:
|
|||
rm -rf __pycache__
|
||||
rm -rf .mypy_cache
|
||||
|
||||
cmd-dev:
|
||||
python3 -m uvicorn main:app \
|
||||
--reload \
|
||||
--host $${APP_HOST} \
|
||||
--port $${APP_PORT}
|
||||
|
||||
cmd-docker-build:
|
||||
docker build \
|
||||
-t ${REPO_OWNER_LOWER}/${REPO_NAME_SNAKE}:latest \
|
||||
|
|
|
@ -20,6 +20,8 @@ class Settings(BaseSettings):
|
|||
debug: bool = False
|
||||
session_key: str = secrets.token_hex(32)
|
||||
csrf_key: str = secrets.token_hex(32)
|
||||
app_host: str = '127.0.0.1'
|
||||
app_port: int = 8000
|
||||
|
||||
|
||||
settings = Settings()
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
version: "3"
|
||||
|
||||
services:
|
||||
|
||||
${REPO_NAME_SNAKE}:
|
||||
image: ${REPO_OWNER_LOWER}/${REPO_NAME_SNAKE}:latest
|
||||
container_name: ${REPO_NAME_SNAKE}
|
||||
|
@ -10,10 +11,20 @@ services:
|
|||
links:
|
||||
- ${REPO_NAME_SNAKE}_db
|
||||
env_file: .env
|
||||
depends_on:
|
||||
${REPO_NAME_SNAKE}_db:
|
||||
condition: service_healthy
|
||||
|
||||
${REPO_NAME_SNAKE}_db:
|
||||
image: mariadb:latest
|
||||
container_name: ${REPO_NAME_SNAKE}_db
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- "./database:/var/lib/mysql"
|
||||
env_file: .env
|
||||
env_file: .env_db
|
||||
healthcheck:
|
||||
test: sh -c "mysqladmin ping -u$$$$MYSQL_USER -p$$$$MYSQL_PASSWORD"
|
||||
interval: 1s
|
||||
timeout: 3s
|
||||
retries: 20
|
||||
start_period: 10s
|
||||
|
|
7
main.py
7
main.py
|
@ -3,7 +3,12 @@
|
|||
import uvicorn
|
||||
|
||||
from app.main import app
|
||||
from app.common import settings
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
uvicorn.run(app)
|
||||
uvicorn.run(
|
||||
app=app,
|
||||
host=settings.app_host,
|
||||
port=settings.app_port,
|
||||
)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
fastapi==0.92.0
|
||||
uvicorn[standard]==0.20.0
|
||||
gunicorn==20.1.0
|
||||
jinja2==3.1.2
|
||||
starlette-wtf==0.4.3
|
||||
sqlalchemy==2.0.4
|
||||
|
|
Loading…
Reference in a new issue