FROM python:3.9-slim AS builder WORKDIR /app COPY ./pyproject.toml . COPY ./poetry.lock . # Install build dependencies RUN apt-get update \ && apt-get install -y --no-install-recommends build-essential \ && pip install --upgrade pip poetry \ && poetry config virtualenvs.create false \ && poetry install --no-interaction --no-ansi FROM python:3.9-slim WORKDIR /app # Install runtime dependencies RUN apt-get update \ && apt-get install -y --no-install-recommends libpq5 redis-server \ && apt-get install -y postgresql \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Install PostgreSQL client RUN apt-get update \ && apt-get install -y --no-install-recommends postgresql-client \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Switch to the root user USER root # Copy the built virtual environment from the builder stage COPY --from=builder /usr/local /usr/local # Copy the rest of the backend files to the container COPY ./ . # Install additional Python dependencies #RUN pip install -U -q pyngrok ipython psycopg2 alembic # Create PostgreSQL users and databases in the background #RUN service redis-server start \ # && service postgresql start RUN apt-get update && apt-get install -y supervisor redis-server postgresql-12 # Copying supervisor configuration file to container ADD supervisor.conf /etc/supervisor.conf # Initializing redis and postgres services using supervisord CMD ["supervisord","-c","supervisor.conf"] #RUN pg_ctl start -D /usr/local/pgsql/data -l logfile \ # && psql -c "CREATE USER postadmin WITH PASSWORD 'postpass';" \ # && psql -c "CREATE DATABASE siksalaya;" \ # && psql -c "GRANT ALL PRIVILEGES ON DATABASE siksalaya TO postadmin;" \ # && pg_ctl stop -D /usr/local/pgsql/data RUN alembic revision --autogenerate -m "migrations" RUN alembic upgrade head # Start the FastAPI app using Uvicorn CMD ["bash", "-c", "redis-server --daemonize yes && uvicorn app:app --host 0.0.0.0 --port 7860"]