Настройка Traefik Django & React
Недавно я столкнулся с конфигурацией сервера с помощью GitLab CI/CD и docker-compose, у меня есть два отдельных репозитория один для Django, другой для React JS на Gitlab.
В Django Repo содержится следующий файл production.yml:
version: '3'
volumes:
production_postgres_data: {}
production_postgres_data_backups: {}
production_traefik: {}
services:
django: &django
build:
context: .
dockerfile: ./compose/production/django/Dockerfile
image: one_sell_production_django
platform: linux/x86_64
expose: # new
- 5000
depends_on:
- postgres
- redis
env_file:
- ./.envs/.production/.django
- ./.envs/.production/.postgres
command: /start
labels: # new
- "traefik.enable=true"
- "traefik.http.routers.django.rule=Host(`core.lwe.local`)"
postgres:
build:
context: .
dockerfile: ./compose/production/postgres/Dockerfile
image: one_sell_production_postgres
expose:
- 5432
volumes:
- production_postgres_data:/var/lib/postgresql/data:Z
- production_postgres_data_backups:/backups:z
env_file:
- ./.envs/.production/.postgres
traefik: # new
image: traefik:v2.2
ports:
- 80:80
- 8081:8080
volumes:
- "./compose/production/traefik/traefik.dev.toml:/etc/traefik/traefik.toml"
- "/var/run/docker.sock:/var/run/docker.sock:ro"
redis:
image: redis:6
Это отлично работает с использованием Traefik, у меня также есть следующий код для React JS repo:
version: '3.8'
services:
frontend:
build:
context: ./
dockerfile: Dockerfile
expose:
- 3000
labels: # new
- "traefik.enable=true"
- "traefik.http.routers.django.rule=Host(`lwe.local`)"
restart: 'always'
env_file:
- .env
Теперь я не знаю, как подключить оба Django и React Js Repo с помощью Traefik, а также как должна быть конфигурация CI/CD, ниже приведена конфигурация CI/CD для Django Repo (я опустил ненужную информацию и просто включил этап развертывания):
deploy:
stage: deploy
tags:
- docker
when: always
before_script:
- mkdir -p .envs/.production/
- touch .envs/.production/.django
- touch .envs/.production/.postgres
- touch .env
- chmod +x ./setup_env.sh
- sh setup_env.sh
- less .envs/.production/.django
- less .envs/.production/.postgres
- docker-compose -f production.yml build
- docker-compose -f production.yml run --rm django python manage.py migrate
script:
- docker-compose -f local.yml up -d