# UNIFIED Dockerfile - AUTO-DETECT Thick/Thin Mode FROM python:3.11-slim as base # Set argument for build mode (thick by default for compatibility) ARG ORACLE_MODE=thick # Base application setup WORKDIR /app COPY requirements.txt /app/requirements.txt RUN pip3 install -r requirements.txt # Oracle Instant Client installation (only if thick mode) RUN if [ "$ORACLE_MODE" = "thick" ] ; then \ apt-get update && apt-get install -y libaio-dev wget unzip curl && \ mkdir -p /opt/oracle && cd /opt/oracle && \ wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \ unzip instantclient-basiclite-linuxx64.zip && \ rm -f instantclient-basiclite-linuxx64.zip && \ cd /opt/oracle/instantclient* && \ rm -f *jdbc* *occi* *mysql* *README *jar uidrvci genezi adrci && \ echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && \ ldconfig && \ ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1 ; \ else \ echo "Thin mode - skipping Oracle Instant Client installation" ; \ fi # Copy application files COPY . . # Create logs directory RUN mkdir -p /app/logs # Expose port EXPOSE 5000 # Run Flask application with auto-detect mode CMD ["gunicorn", "--bind", "0.0.0.0:5000", "admin:app", "--reload", "--access-logfile", "-"]