Files
links/.history/setup_20250505082317.sh
2025-05-06 20:44:33 +09:00

128 lines
2.8 KiB
Bash

#!/usr/bin/env bash
set -e
# Запустите этот скрипт из корня вашего репозитория (~/links)
# Переменные
BACKEND_DIR="backend"
FRONTEND_DIR="frontend"
APPS=("users" "links" "customization")
# 1. Создаем .gitignore и README
cat > .gitignore << 'EOF'
__pycache__/
*.pyc
.env
media/
node_modules/
dist/
.venv/
EOF
if [ ! -f README.md ]; then
echo "# Клон Linktr.ee на Django" > README.md
fi
echo "Настраиваем backend-проект"
# 2. Создаем backend-проект
mkdir -p $BACKEND_DIR && cd $BACKEND_DIR
# Виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate
# Устанавливаем зависимости
pip install Django psycopg2-binary djangorestframework pillow django-tailwind whitenoise gunicorn
# Инициализируем Django-проект (если не создан)
if [ ! -f config/manage.py ]; then
django-admin startproject config .
fi
# Создаем приложения, если их нет
for app in "${APPS[@]}"; do
if [ ! -d "$app" ]; then
python manage.py startapp $app
fi
done
# Генерируем requirements.txt
pip freeze > requirements.txt
deactivate
cd ..
# 3. Dockerfile для backend
cat > $BACKEND_DIR/Dockerfile << 'EOF'
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "config.wsgi:application", "--bind", "0.0.0.0:8000"]
EOF
echo "Создаем docker-compose.yml"
# 4. docker-compose.yml в корне
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
web:
build: ./backend
volumes:
- ./backend:/app
- media_volume:/app/media
env_file:
- .env
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:14
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- .env
volumes:
postgres_data:
media_volume:
EOF
echo "Настраиваем frontend-проект"
# 5. Frontend: инициализация
mkdir -p $FRONTEND_DIR && cd $FRONTEND_DIR
if [ ! -f package.json ]; then
npm init -y
npm install axios react react-dom
fi
mkdir -p public src/components src/pages src/services src/styles
# public/index.html
cat > public/index.html << 'EOF'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Linktr Clone</title>
</head>
<body>
<div id="root"></div>
<script src="../src/index.js"></script>
</body>
</html>
EOF
# src/index.js
cat > src/index.js << 'EOF'
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(<h1>Linktr Clone</h1>, document.getElementById('root'));
EOF
cd ..
echo "Проект настроен успешно!"