diff --git a/Dockerfile b/Dockerfile index 0abea58..d972334 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,32 +23,8 @@ COPY . . # Create necessary directories and set permissions RUN mkdir -p /app/uploads /app/static/uploads && \ - chown -R celery:celery /app - -# Create and set up startup script -RUN echo '#!/bin/bash\n\ -echo "Waiting for database..."\n\ -while ! nc -z db 5432; do\n\ - sleep 0.1\n\ -done\n\ -echo "Database is ready!"\n\ -\n\ -echo "Waiting for Redis..."\n\ -while ! nc -z redis 6379; do\n\ - sleep 0.1\n\ -done\n\ -echo "Redis is ready!"\n\ -\n\ -echo "Running database migrations..."\n\ -flask db upgrade\n\ -\n\ -echo "Creating admin user..."\n\ -flask create-admin\n\ -\n\ -echo "Starting application..."\n\ -exec "$@"' > /app/start.sh && \ - chmod +x /app/start.sh && \ - chown celery:celery /app/start.sh + chown -R celery:celery /app && \ + chmod +x /app/start.sh # Switch to non-root user USER celery diff --git a/docker-compose.yml b/docker-compose.yml index fd95a21..42969cf 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,9 @@ version: '3.8' services: web: - build: . + build: + context: . + dockerfile: Dockerfile command: gunicorn --bind 0.0.0.0:5000 app:app ports: - "10335:5000" @@ -16,9 +18,12 @@ services: - REDIS_URL=redis://redis:6379/0 volumes: - uploads:/app/uploads + - static:/app/static depends_on: - - db - - redis + db: + condition: service_healthy + redis: + condition: service_healthy restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:5000/health"] @@ -58,14 +63,16 @@ services: retries: 3 celery_worker: - build: . + build: + context: . + dockerfile: Dockerfile command: celery -A celery_worker.celery worker --loglevel=info volumes: - - ./uploads:/app/uploads - - ./static:/app/static + - uploads:/app/uploads + - static:/app/static environment: - FLASK_APP=app.py - - FLASK_ENV=development + - FLASK_ENV=production - DATABASE_URL=postgresql://postgres:postgres@db:5432/docupulse - REDIS_URL=redis://redis:6379/0 depends_on: @@ -87,6 +94,8 @@ services: volumes: postgres_data: - name: ${COMPOSE_PROJECT_NAME:-default}_postgres_data + name: docupulse_postgres_data uploads: - name: ${COMPOSE_PROJECT_NAME:-default}_uploads \ No newline at end of file + name: docupulse_uploads + static: + name: docupulse_static \ No newline at end of file