semantix-api / Dockerfile
Miroir's picture
updated api
1f3b631
FROM python:3.11-slim
# Create user first
RUN useradd -m -u 1000 user
# Create necessary directories
RUN mkdir -p /tmp/fasttext_cache /app/logs && \
chown -R user:user /tmp/fasttext_cache /app/logs
# Install curl for healthcheck
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
# Create startup script
RUN echo '#!/bin/bash\n\
echo "Starting application..."\n\
echo "Checking MODEL_URL accessibility..."\n\
curl --head --silent --fail ${MODEL_URL} || (echo "ERROR: Cannot access MODEL_URL" && exit 1)\n\
echo "MODEL_URL is accessible"\n\
echo "Starting uvicorn server..."\n\
exec uvicorn main:app --host 0.0.0.0 --port 7860 --log-level info' > /app/start.sh && \
chmod +x /app/start.sh && \
chown user:user /app/start.sh
# Switch to user after setting up permissions
USER user
ENV PATH="/home/user/.local/bin:$PATH"
ENV MODEL_URL="https://huggingface.co/Miroir/cc.fr.300.reduced/resolve/main/cc.fr.300.reduced.vec"
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY --chown=user requirements.txt requirements.txt
# Install dependencies
RUN pip install --no-cache-dir --upgrade pip && \
pip install --no-cache-dir --upgrade -r requirements.txt
COPY --chown=user . .
# Create data directory for game state
RUN mkdir -p /app/data && chown user:user /app/data
# Add healthcheck
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost:7860/ || exit 1
CMD ["/app/start.sh"]