FROM python:3.11-slim-bookworm ENV DEBIAN_FRONTEND=noninteractive ENV PYTHONUNBUFFERED=1 ENV PGDATA=/data/postgres # Install PostgreSQL 15 + tools RUN apt-get update && \ apt-get install -y --no-install-recommends \ postgresql-15 \ postgresql-contrib-15 \ postgresql-client-15 \ supervisor \ curl \ unzip \ sudo \ procps \ && rm -rf /var/lib/apt/lists/* # Install pgweb (lightweight PostgreSQL web UI) RUN curl -sL https://github.com/sosedoff/pgweb/releases/download/v0.16.0/pgweb_linux_amd64.zip \ -o /tmp/pgweb.zip && \ unzip /tmp/pgweb.zip -d /usr/local/bin/ && \ mv /usr/local/bin/pgweb_linux_amd64 /usr/local/bin/pgweb && \ chmod +x /usr/local/bin/pgweb && \ rm /tmp/pgweb.zip # Install Python dependencies COPY requirements.txt /tmp/ RUN pip install --no-cache-dir -r /tmp/requirements.txt # Create directories RUN mkdir -p /data/postgres \ /data/backup \ /var/run/postgresql \ /var/log/supervisor \ /app && \ chown -R postgres:postgres /data/postgres /var/run/postgresql && \ chmod 700 /data/postgres # Copy application files COPY start.sh /app/start.sh COPY sync_manager.py /app/sync_manager.py COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf RUN chmod +x /app/start.sh WORKDIR /app EXPOSE 7860 CMD ["/app/start.sh"]