Deploy Django into Docker

Определимся что необходимо собрать в Docker контейнер для нашего Django проекта

В начале соберем Docker образ и загрузим его на Hub со всеми необходимыми пакетами

FROM python:3.7-alpine

RUN apk update && apk add libpq && pip install --upgrade pip && pip install --upgrade pipenv
RUN apk add --no-cache --virtual .build-deps \
    gcc \
    python3-dev \
    musl-dev \
    postgresql-dev \
    && pip install --no-cache-dir psycopg2 \
    && apk del --no-cache .build-deps

RUN addgroup -S -g 1001 app && adduser -S -D -h /app -u 1001 -G app app

# set environment varibles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

RUN mkdir -p /app/src
WORKDIR /app/src
RUN chown -R app.app /app/
COPY Pipfile Pipfile.lock /app/src/

# install dependencies
RUN pipenv install --deploy --system

# Server
EXPOSE 8000

Соберем build

docker build -t web .

Ставим тег

docker tag web bitwolff/educ:latest

Пушим

docker push bitwolff/educ:latest

Теперь можем использовать наш докер образ в проектах. Создадим папку с проектом и создадим файл Dockerfile

FROM bitwolff/educ:latest
WORKDIR /app/src
COPY . /app/src/

EXPOSE 8000

Создадим docker-composer.yml

version: '3'

services:
  web:
    restart: always
    build: ./app/
    command: gunicorn myproject.wsgi:application --bind 0.0.0.0:8000
    ports:
      - 8000:8000
    environment:
      - DB_USER=myproject
      - DB_NAME=myproject
      - DB_PASSWORD=myproject
      - DB_HOST=localhost
      - DB_PORT=5432
      - SECRET_KEY=z2a4@r8&mgdwje1xzvm4566c9qkijyaw&1s&rtw3cvq2hk7mi6

Теперь для запуска выполним

docker-compose up -d --force-recreate --build

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *