FROM python:3.13-slim WORKDIR /opt/pipeline # System dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ gcc \ libpq-dev \ && rm -rf /var/lib/apt/lists/* # Python dependencies COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Install custom Singer taps COPY plugins/ plugins/ RUN pip install --no-cache-dir \ ./plugins/extractors/tap-uk-gias \ ./plugins/extractors/tap-uk-ees \ ./plugins/extractors/tap-uk-ofsted \ ./plugins/extractors/tap-uk-parent-view \ ./plugins/extractors/tap-uk-fbit \ ./plugins/extractors/tap-uk-idaci # Copy pipeline code COPY meltano.yml . COPY transform/ transform/ COPY scripts/ scripts/ COPY dags/ dags/ # dbt deps RUN cd transform && dbt deps --profiles-dir . 2>/dev/null || true ENV AIRFLOW_HOME=/opt/airflow ENV PYTHONPATH=/opt/pipeline CMD ["airflow", "webserver"]