refactor: restructure project layout

This commit is contained in:
Felix Spöttel
2023-01-07 11:35:31 +01:00
parent e41c07fd4b
commit 4fa1d5c0da
26 changed files with 75 additions and 50 deletions

16
docker/app.dev.Dockerfile Normal file
View File

@@ -0,0 +1,16 @@
FROM python:3.11 AS compile-image
COPY pyproject.toml .
RUN pip install --user .[test]
FROM python:3.11 AS build-image
WORKDIR /code
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
COPY --from=compile-image /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
ENTRYPOINT ["bash", "./app/web/start.sh"]

View File

@@ -0,0 +1,85 @@
version: "3.8"
x-app-variables: &app-variables
API_SECRET: a_very_secret_token
DATABASE_URI: postgresql://postgres:postgres@postgres/whisper_api
ENVIRONMENT: development
REDIS_URI: redis://redis:6379/0
services:
postgres:
container_name: whisper_api_postgres
image: postgres:15-alpine
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: whisper_api
ports:
- "5432:5432"
networks:
- app
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
redis:
container_name: whisper_api_redis
image: redis:7-alpine
ports:
- 6379:6379
networks:
- app
app:
container_name: whisper_api_app
build:
context: ../
dockerfile: docker/app.dev.Dockerfile
environment: *app-variables
ports:
- "8000:80"
networks:
- app
volumes:
- ../:/code
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
worker:
build:
context: ../
dockerfile: docker/worker.dev.Dockerfile
container_name: whisper_api_worker
volumes:
- ../:/code
environment: *app-variables
depends_on:
- app
- redis
networks:
- app
flower:
container_name: whisper_api_flower
image: mher/flower
command: celery --broker redis://redis:6379/0 flower --port=5555
ports:
- 5555:5555
depends_on:
- redis
networks:
- app
volumes:
postgres-data:
networks:
app:
driver: bridge

View File

@@ -0,0 +1,18 @@
FROM python:3.10 AS compile-image
COPY pyproject.toml .
RUN pip install --user .[test,worker]
RUN apt-get update && apt-get clean && apt-get install -y --no-install-recommends ffmpeg
FROM python:3.10 AS build-image
WORKDIR /code
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
COPY --from=compile-image /root/.local /root/.local
ENV PATH=/root/.local/bin:$PATH
ENTRYPOINT ["celery", "--app=app.worker.main.celery", "worker", "--loglevel=info"]