Skip to content
Snippets Groups Projects
Dockerfile.prod 1.61 KiB
Newer Older
  • Learn to ignore specific revisions
  • ###########
    # BUILDER #
    ###########
    
    # pull official base image
    FROM python:3.8.1 as builder
    
    # set work directory
    WORKDIR /usr/src/app
    
    # set environment variables
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    
    # install dependencies
    RUN apt-get -y update
    RUN apt-get install -y python python-pip python-dev python-django-extensions postgresql-client netcat
    RUN apt-get -y update && apt-get -y autoremove
    
    # lint
    RUN pip install --upgrade pip
    RUN pip install flake8
    COPY ./src /usr/src/app/
    #RUN flake8 --max-line-length=125 --exclude=kszkepzes,migrations .
    
    # install dependencies
    COPY ./requirements/production.txt /usr/src/app/requirements.txt
    RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/app/wheels -r requirements.txt
    
    #########
    # FINAL #
    #########
    
    # pull official base image
    FROM python:3.8.1
    
    # create directory for the app user
    RUN mkdir -p /home/app
    
    # create the app user
    RUN groupadd app && useradd -g app app
    
    # create the appropriate directories
    ENV HOME=/home/app
    ENV APP_HOME=/home/app/kszkepzes-backend
    RUN mkdir $APP_HOME
    
    Rafael László's avatar
    Rafael László committed
    RUN mkdir $APP_HOME/staticfiles
    
    WORKDIR $APP_HOME
    
    # install dependencies
    RUN apt-get -y update && apt-get install netcat -y
    COPY --from=builder /usr/src/app/wheels /wheels
    COPY --from=builder /usr/src/app/requirements.txt .
    RUN pip install --upgrade pip
    RUN pip install --no-cache /wheels/*
    
    # copy entrypoint-prod.sh
    COPY ./src/entrypoint.prod.sh $APP_HOME
    
    # copy project
    COPY ./src $APP_HOME
    
    # chown all the files to the app user
    RUN chown -R app:app $APP_HOME
    
    # change to the app user
    USER app
    
    # run entrypoint.sh
    ENTRYPOINT ["/home/app/kszkepzes-backend/entrypoint.prod.sh"]