Files
TimeTrack/Dockerfile

54 lines
1.4 KiB
Docker

FROM python:3.9-slim
# Set working directory
WORKDIR /app
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
FLASK_APP=app.py
# Install system dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
gcc \
build-essential \
python3-dev \
postgresql-client \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
ENV LANG=en_US.UTF-8
ENV TZ=Europe/Berlin
# Create www-data user and log directory
RUN groupadd -r www-data && useradd -r -g www-data www-data || true
RUN mkdir -p /var/log/uwsgi && chown -R www-data:www-data /var/log/uwsgi
RUN mkdir -p /host/shared && chown -R www-data:www-data /host/shared
# Copy requirements file first for better caching
COPY requirements.txt .
# Install Python dependencies
RUN pip install --no-cache-dir -r requirements.txt
RUN pip install gunicorn==21.2.0
# Copy the rest of the application
COPY . .
# Create the SQLite database directory with proper permissions
RUN mkdir -p /app/instance && chmod 777 /app/instance
# Create uploads directory with proper permissions
RUN mkdir -p /app/static/uploads/avatars && chmod -R 777 /app/static/uploads
VOLUME /data
RUN mkdir /data && chmod 777 /data
# Make startup script executable
RUN chmod +x startup.sh
# Expose the port the app runs on (though we'll use unix socket)
EXPOSE 5000
# Use startup script for automatic migration
CMD ["./startup.sh"]