| # Use the official Python image from the Docker Hub | |
| FROM python:3.10-slim | |
| # Set the working directory in the container | |
| WORKDIR /app | |
| # Install git and git-lfs | |
| RUN apt-get update \ | |
| && apt-get install -y git git-lfs libsndfile1 nginx \ | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* \ | |
| && git lfs install | |
| # Setup nginx folders and permissions | |
| RUN mkdir -p /var/cache/nginx \ | |
| /var/log/nginx \ | |
| /var/lib/nginx | |
| RUN touch /var/run/nginx.pid | |
| RUN useradd -m -u 1000 user | |
| RUN chown -R user:user /var/cache/nginx \ | |
| /var/log/nginx \ | |
| /var/lib/nginx \ | |
| /var/run/nginx.pid | |
| # Copy Nginx configuration | |
| COPY --chown=user nginx.conf /etc/nginx/sites-enabled/app.conf | |
| # Remove default config and Test nginx | |
| RUN rm /etc/nginx/sites-enabled/default && nginx -t && service nginx start | |
| # Copy the requirements file into the container | |
| COPY --chown=user requirements.txt . | |
| # Install the required packages | |
| RUN pip install --no-cache-dir -r requirements.txt \ | |
| # Install gruut[sw] separately | |
| && pip install -f 'https://synesthesiam.github.io/prebuilt-apps/' 'gruut[sw]' | |
| # Copy the rest of the application code into the container | |
| COPY --chown=user . . | |
| # Expose the port the app runs on (from nginx) | |
| EXPOSE 7860 | |
| HEALTHCHECK --interval=10s --timeout=5s --start-period=5s --retries=3 \ | |
| CMD ["sh", "/app/healthcheck.sh"] | |
| # Use exec form to call the script | |
| CMD ["/app/startup.sh"] | |