From c7aadebce1314d2e92fa1f105480a29feb0d6748 Mon Sep 17 00:00:00 2001 From: Nikita Romanov Date: Mon, 13 Nov 2023 13:39:38 +0300 Subject: [PATCH] new serv --- .github/workflows/main.yml | 24 +++++++- docker-compose.production.yml | 26 +++++---- docker-compose.yml | 17 ++---- gateway/Dockerfile | 2 + gateway/nginx.conf | 52 +++++++++++++++++ ...21\203\320\272\321\206\320\270\321\217.md" | 57 +++++++++++++++++++ 6 files changed, 154 insertions(+), 24 deletions(-) create mode 100644 gateway/Dockerfile create mode 100644 gateway/nginx.conf create mode 100644 "\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 69c0fc0..d95747b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -62,6 +62,27 @@ jobs: push: true tags: ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}_backend:latest + + build_gateway_and_push_to_docker_hub: + name: Push gateway Docker image to DockerHub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to Docker + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Push to DockerHub + uses: docker/build-push-action@v4 + with: + context: ./gateway/ + push: true + tags: ${{ secrets.DOCKER_USERNAME }}/${{ secrets.PROJECT_NAME }}_gateway:latest + deploy: runs-on: ubuntu-latest needs: @@ -91,7 +112,8 @@ jobs: sudo docker compose -f docker-compose.production.yml down sudo docker compose -f docker-compose.production.yml up -d sudo docker system prune -af - + + send_message: runs-on: ubuntu-latest needs: deploy diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 07b52ee..b6bdd9b 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -1,3 +1,4 @@ + version: '3.8' volumes: @@ -26,19 +27,20 @@ services: frontend: image: documents23/document-template-engine_frontend:latest env_file: .env + command: cp -r /app/build/. /static/ volumes: - - ./frontend/:/app/result_build/ + - static:/static - nginx: - image: nginx:1.19.3 + gateway: + image: documents23/document-template-engine_gateway:latest + env_file: .env ports: - - "8000:80" + - 8088:80 volumes: - - ./proxy-server/nginx.conf:/etc/nginx/conf.d/default.conf - - ./frontend/build:/usr/share/nginx/html/ - - ./docs/:/usr/share/nginx/html/api/docs/ - - static:/var/html/static/ - - media:/var/html/media/ - depends_on: - - backend - restart: always \ No newline at end of file + - static:/staticfiles/ + - media:/app/media/ + + + + + diff --git a/docker-compose.yml b/docker-compose.yml index ce0efa4..d6cbfcc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,16 +28,11 @@ services: volumes: - ./frontend/:/app/result_build/ - nginx: - image: nginx:1.19.3 + gateway: + build: ./nginx/ + env_file: .env ports: - - "8000:80" + - 8088:80 volumes: - - ./proxy-server/nginx.conf:/etc/nginx/conf.d/default.conf - - ./frontend/build:/usr/share/nginx/html/ - - ./docs/:/usr/share/nginx/html/api/docs/ - - static:/var/html/static/ - - media:/var/html/media/ - depends_on: - - backend - restart: always + - static:/staticfiles/ + - media:/app/media/ diff --git a/gateway/Dockerfile b/gateway/Dockerfile new file mode 100644 index 0000000..f0808a1 --- /dev/null +++ b/gateway/Dockerfile @@ -0,0 +1,2 @@ +FROM nginx:1.22.1 +COPY nginx.conf /etc/nginx/templates/default.conf.template diff --git a/gateway/nginx.conf b/gateway/nginx.conf new file mode 100644 index 0000000..8b078fc --- /dev/null +++ b/gateway/nginx.conf @@ -0,0 +1,52 @@ +server { + listen 80; + + location /media/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /static/admin/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /static/rest_framework/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /static/drf-yasg/ { + proxy_set_header Host $http_host; + root /var/html/; + } + + location /admin/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/admin/; + } + + location /api/ { + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/api/; + } + + location /swagger/ { + proxy_set_header X-Forwarded-Protocol $scheme; + proxy_set_header Host $http_host; + proxy_pass http://backend:9000/swagger/; + } + + location /redoc/ { + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-Protocol $scheme; + proxy_pass http://backend:9000/redoc/; + } + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + + } +} + diff --git "a/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" "b/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" new file mode 100644 index 0000000..db43139 --- /dev/null +++ "b/\320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\321\217.md" @@ -0,0 +1,57 @@ +# Запуск бека на локальной машине + +## Устанавливаем Python +Для работы бека нужен Python 3.9, для этого можно скачать с офф сайта или же через Microsoft Store(рекомендуется) + +## Создаем виртуальное окружение +Через Bash заходим в папку с Backend(Там где находиться requirements.txt и manage.py) и прописываем команду + +### Cоздать и активировать виртуальное окружение: +#### Создание виртуального окружения +``` + python3.9 -m venv venv +``` + +#### Активация виртаульного окружения +##### Если у вас Linux/macOS +``` + source venv/bin/activate +``` + +##### Если у вас windows +``` + source venv/scripts/activate + +``` + +### Установить зависимости из файла requirements.txt: +Скачиваем и устанавливаем все зависимости +``` + python -m pip install --upgrade pip + pip install -r requirements.txt +``` + +### Выполнить миграции: +``` + cd backend + python manage.py makemigrations + python manage.py migrate +``` + +### Запустить проект: +``` + cd backend + python manage.py runserver +``` + +### Создать суперпользователя: +``` + cd backend + python manage.py createsuperuser +``` + +### Добавить темлейтов в базу: +``` + cd backend + python manage.py init_templates +``` \ No newline at end of file