Drawer

Project code:

FROM python:3.11-slim

ENV PYTHONUNBUFFERED=1 \
    POETRY_VIRTUALENVS_CREATE=false \
    PIP_NO_CACHE_DIR=off \
    PIP_DISABLE_PIP_VERSION_CHECK=on

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    libpq-dev \
    curl \
    ffmpeg \
    libjpeg-dev \
    zlib1g-dev \
    && rm -rf /var/lib/apt/lists/*

COPY requirements.txt /app/
RUN pip install --upgrade pip && pip install -r requirements.txt

COPY . /app

COPY ./entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh

EXPOSE 8000

ENTRYPOINT ["/app/entrypoint.sh"]
CMD ["gunicorn", "learnshare.wsgi:application", "--bind", "0.0.0.0:8000", "--workers", "3"].

version: "3.8"
services:
  web:
    build: .
    image: learnshare:web
    container_name: learnshare_web
    ports:
      - "8000:8000"
    environment:
      - DEBUG=1
      - SECRET_KEY=change-me-in-production
    volumes:
      - ./:/app:rw
      - static_volume:/app/static
      - media_volume:/app/media
    depends_on: []
    restart: unless-stopped

volumes:
  static_volume:
  media_volume:

 

#!/usr/bin/env bash
set -e

if [ -f /app/manage.py ]; then
  python manage.py makemigrations --noinput || true
  python manage.py migrate --noinput
  python manage.py collectstatic --noinput
fi

exec "$@"

 

#!/usr/bin/env bash
set -e

if [ -f /app/manage.py ]; then
  python manage.py makemigrations --noinput || true
  python manage.py migrate --noinput
  python manage.py collectstatic --noinput
fi

exec "$@"