FROM node:18-alpine AS frontend-build WORKDIR /app/frontend COPY frontend/package.json frontend/package-lock.json* ./ RUN npm install COPY frontend/ ./ RUN npm run build FROM continuumio/miniconda3:24.1.2-0 WORKDIR /app/backend # Copy backend environment.yml COPY backend/environment.yml ./ # Create conda environment RUN conda env create -f environment.yml # Activate conda environment by default SHELL ["/bin/bash", "-c"] ENV PATH /opt/conda/envs/omniseal-benchmark-backend/bin:$PATH # Copy backend code COPY backend/ . # Copy frontend build COPY --from=frontend-build /app/frontend/dist /app/frontend/dist # Set environment variables ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 ENV FLASK_APP=backend/app.py ENV FLASK_ENV=development # Expose the port the app will run on EXPOSE 7860 WORKDIR /app # Command to run the application CMD ["/bin/bash", "-c", "conda run --no-capture-output -n omniseal-benchmark-backend gunicorn --chdir /app/backend -b 0.0.0.0:7860 app:app --reload --reload-extra-file /app/frontend/dist/index.html --reload-engine=auto --workers=2 --timeout 120"]