recipe-rover-api / Dockerfile
garvitcpp's picture
Update Dockerfile
53ad8cf verified
FROM python:3.12
WORKDIR /code
# Create and activate virtual environment
ENV VIRTUAL_ENV=/opt/venv
RUN python -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Install packages in the virtual environment (fixed syntax)
RUN pip install flask==3.0.0 \
&& pip install openai==0.28.0 \
&& pip install python-dotenv==1.0.0 \
&& pip install google-generativeai>=0.8.3 \
&& pip install pillow==10.1.0 \
&& pip install beautifulsoup4==4.12.2 \
&& pip install joblib==1.3.2 \
&& pip install scipy==1.11.4 \
&& pip install pandas==2.1.3 \
&& pip install scikit-learn==1.5.2 \
&& pip install flask-cors==4.0.0 \
&& pip install "flask[async]"==3.0.0 \
&& pip install gunicorn==21.2.0 \
&& pip install requests
# Copy application files
COPY ./app /code/app
COPY ./run.py /code/run.py
COPY ./config.py /code/config.py
COPY ./precomputed /code/precomputed
COPY ./recipe_dataset.csv /code/recipe_dataset.csv
COPY ./form_data.json /code/form_data.json
# Clean up cache
RUN find /code -type d -name "__pycache__" -exec rm -r {} + 2>/dev/null || true
# Create wsgi.py
RUN echo 'from run import app\n\nif __name__ == "__main__":\n app.run()' > /code/wsgi.py
# Run with gunicorn
CMD ["gunicorn", "--bind", "0.0.0.0:7860", "--workers", "1", "--timeout", "120", "--preload", "wsgi:app"]