https://github.com/smolodtsova13/kittygram_final
Социальная сеть для обмена фотографиями питомцев
https://github.com/smolodtsova13/kittygram_final
django django-rest-framework docker docker-compose github-actions gunicorn nginx postgresql python
Last synced: 3 months ago
JSON representation
Социальная сеть для обмена фотографиями питомцев
- Host: GitHub
- URL: https://github.com/smolodtsova13/kittygram_final
- Owner: SMolodtsova13
- Created: 2024-08-27T11:16:36.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-23T06:16:48.000Z (over 1 year ago)
- Last Synced: 2025-09-07T17:53:12.400Z (10 months ago)
- Topics: django, django-rest-framework, docker, docker-compose, github-actions, gunicorn, nginx, postgresql, python
- Language: JavaScript
- Homepage:
- Size: 405 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Социальная сеть для котиков Kittygram
## Технологический стек
[](https://www.python.org/)
[](https://www.djangoproject.com/)
[](https://www.django-rest-framework.org/)
[](https://www.postgresql.org/)
[](https://nginx.org/ru/)
[](https://gunicorn.org/)
[](https://www.docker.com/)
[](https://www.docker.com/)
[](https://www.docker.com/products/docker-hub)
[](https://github.com/features/actions)
## Описание проекта Kittygram
Kittygram — это социальная сеть для обмена фотографиями любимых питомцев.
Пользователи могут регистрироваться, загружать фотографии с описанием и смотреть питомцев других пользователей. Также есть возможность добавить/убрать (своего) питомца, подобрать цвет, на который его окрас больше всего походит, рассказть всем о достижениях котика и указать его возраст!
### Запуск проекта
- Склонируйте репозиторий на свой компьютер:
```
git clone git@github.com:SMolodtsova13/kittygram_final.git
```
- Создайте файл `.env` и заполните его своими данными. Все необходимые переменные перечислены в файле `.env.example`, находящемся в корневой директории проекта.
## Создание Docker-образов
- Замените `YOUR_USERNAME` на свой логин на DockerHub:
```
cd frontend
docker build -t YOUR_USERNAME/kittygram_frontend .
cd ../backend
docker build -t YOUR_USERNAME/kittygram_backend .
cd ../nginx
docker build -t YOUR_USERNAME/kittygram_gateway .
```
- Загрузите образы на DockerHub:
```
docker push YOUR_USERNAME/kittygram_frontend
docker push YOUR_USERNAME/kittygram_backend
docker push YOUR_USERNAME/kittygram_gateway
```
## Деплой на сервере
- Подключитесь к удаленному серверу
```
ssh -i PATH_TO_SSH_KEY/SSH_KEY_NAME YOUR_USERNAME@SERVER_IP_ADDRESS
```
- Создайте на сервере директорию `kittygram`:
```
mkdir kittygram
```
- Установите Docker Compose на сервер:
```
sudo apt update
sudo apt install curl
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt install docker-compose
```
- Скопируйте файлы `docker-compose.production.yml` и `.env` в директорию `kittygram/` на сервере:
```
scp -i PATH_TO_SSH_KEY/SSH_KEY_NAME docker-compose.production.yml YOUR_USERNAME@SERVER_IP_ADDRESS:/home/YOUR_USERNAME/kittygram/docker-compose.production.yml
```
Где:
- `PATH_TO_SSH_KEY` - путь к файлу с вашим SSH-ключом
- `SSH_KEY_NAME` - имя файла с вашим SSH-ключом
- `YOUR_USERNAME` - ваше имя пользователя на сервере
- `SERVER_IP_ADDRESS` - IP-адрес вашего сервера
- Запустите Docker Compose в режиме демона:
```
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml up -d
```
- Выполните миграции, соберите статические файлы бэкенда и скопируйте их в `/static/static/`:
```
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml exec backend python manage.py migrate
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml exec backend python manage.py collectstatic
sudo docker-compose -f /home/YOUR_USERNAME/kittygram/docker-compose.production.yml exec backend cp -r /app/collected_static/. /static/static/
```
- Откройте конфигурационный файл Nginx в редакторе nano:
```
sudo nano /etc/nginx/sites-enabled/default
```
- Измените настройки `location` в секции `server`:
```
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:9000;
}
```
- Проверьте правильность конфигурации Nginx:
```
sudo nginx -t
```
Если вы получаете следующий ответ, значит, ошибок нет:
```
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
```
- Перезапустите Nginx:
```
sudo service nginx reload
```
## Настройка CI/CD
- Файл workflow уже написан и находится в директории:
```
kittygram/.github/workflows/main.yml
```
- Для адаптации его к вашему серверу добавьте секреты в GitHub Actions:
```
DOCKER_USERNAME # имя пользователя в DockerHub
DOCKER_PASSWORD # пароль пользователя в DockerHub
HOST # IP-адрес сервера
USER # имя пользователя
SSH_KEY # содержимое приватного SSH-ключа (cat ~/.ssh/id_rsa)
SSH_PASSPHRASE # пароль для SSH-ключа
TELEGRAM_TO # ID вашего телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
TELEGRAM_TOKEN # токен вашего бота (получить токен можно у @BotFather, команда /token, имя бота)
```
## Автор:
_Молодцова Светлана_
**telegram** _@smolodtsova_