Деплой проекта на сервер.

Видео отсутствует

Сбор проекта в докер контейнер.

Установка докера

Linux

sudo apt install docker-ce

Windows

ссылка на установщик toolbox

Создадим файл Dockerfile

В этом файле описываем ОБРАЗ, который потом будет использован контейнерами.

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app
RUN python -m pip install --upgrade pip
RUN pip install -r requirements.txt
COPY . /app/
WORKDIR /app/backend
RUN python3 manage.py migrate

PYTHONUNBUFFERED - указывает что вывод будет в терминал.

Далее создаем папку и копируем весь код проекта в нее.

Запускаем установку зависимостей и миграцию.

docker-compose.yml

Создаем файл docker-compose.yml и описываем контейнер web.

version: ‘3’

services: web: build: . command: python manage.py runserver 0.0.0.0:8000 ports: - “8000:8000”

Файл docker-compose.yml упрощает сборку без необходимости указывать множество команд при ручной сборке например:

docker run  --port 8000:8000 -v и т.д.

Собираем образ и поднимаем контейнер

docker-compose up web

admin

Делаем контейнер под сборку фронта.

FROM python:3 as django
...

FROM node:12 as node
RUN mkdir /app
COPY frontend /app/
WORKDIR /app
RUN npm install

ссылка на документацию по сборке

При сборке можно ограничивать ресурсы по процессору и памяти.

Собираем под именем js_dating.

docker build -t js_dating .

Собираем целенаправленно образ node из Dockerfile.

docker build -t mybuildimage --target node .

Просмотр списка образов.

docker images

Удаление образа

docker image rm 4ef4ff7f9799
Видео отсутствует

Деплой проекта на сервер.

apt update
apt install python3 python3-dev python3-venv git mc nginx redis-server npm

Устанавливаем последнюю версию nodeJS.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

Add a new user.

adduser username

Switch on user

su username

Generate ssh key.

ssh-keygen

Print out the public key.

cat ~/.ssh/id_rsa.pub

Copy this key in repo.

Clone the repo.

git clone git@github.com:zdimon/just-dating.git
cd just-dating

Create and activate virtual environment.

python3 -m venv venv
. ./venv/bin/activate

Install requirements.

pip install wheel
pip install -r requirements.txt

Migrate/

./manage.py migrate

Start server.

./bin/run

Start web socket worker.

./bin/celery

Seed database.

./bin/seeddb

Frontend

cd frontend
npm install
./node_modules/.bin/ng build -c production

Nginx configuration file.

File: /etc/nginx/sites-enabled/chat.conf

server {

    server_name chat.webmonstr.com


    client_max_body_size 20M;

    location / {
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Url-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass   http://localhost:7777;
    }


}

Install certbot

sudo apt-get install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx

Generate ssl certificate.

sudo certbot --nginx
Задать вопрос, прокомментировать.