diff --git a/app/main/admin.py b/app/main/admin.py index 60ff864..2edc140 100644 --- a/app/main/admin.py +++ b/app/main/admin.py @@ -2,16 +2,23 @@ from .models import * -admin.site.register(Cinema) -admin.site.register(Country) -admin.site.register(Customer) -admin.site.register(Film) -admin.site.register(FilmGenre) -admin.site.register(Genre) -admin.site.register(Hall) -admin.site.register(ProductionCountry) -admin.site.register(Seat) -admin.site.register(Seller) -admin.site.register(Showtime) -admin.site.register(Ticket) +class ModelAdmin(admin.ModelAdmin): + + def __init__(self, model, admin_site): + self.list_display = [field.name for field in model._meta.fields] + super(ModelAdmin, self).__init__(model, admin_site) + + +admin.site.register(Cinema, ModelAdmin) +admin.site.register(Country, ModelAdmin) +admin.site.register(Customer, ModelAdmin) +admin.site.register(Film, ModelAdmin) +admin.site.register(FilmGenre, ModelAdmin) +admin.site.register(Genre, ModelAdmin) +admin.site.register(Hall, ModelAdmin) +admin.site.register(ProductionCountry, ModelAdmin) +admin.site.register(Seat, ModelAdmin) +admin.site.register(Seller, ModelAdmin) +admin.site.register(Showtime, ModelAdmin) +admin.site.register(Ticket, ModelAdmin) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..72393ae --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,90 @@ +# Версия интерпретатора Python (указываем и забываем) +version: "3.9" +# Описание всех серверов MySQL +services: + # Описание master-server + mysql-master: + # Имя образа MySQL СУБД, скачиваемый из DockerHub (официальный образ) + image: 'mysql:8.0' + # Имя докер-контейнера (имя запущенного докер-образа, также имя хоста в DNS) + container_name: mysql-master + # Передача файлов из местной ОС внутрь контейнера + volumes: + - ./master/master.cnf:/etc/mysql/my.cnf + - ./master/master.sql:/docker-entrypoint-initdb.d/start.sql + - master_volume:/var/lib/mysql + # Указываем переменную окружения внутри контейнера + environment: + MYSQL_ROOT_PASSWORD: "password" + # Пробрасываем порт с хостовой машины внутрь докера для возможности подключения к СУБД снаружи + ports: + - '3306:3306' + # Описание Slave-server + mysql-slave-1: + image: 'percona:8.0' + container_name: mysql-slave-1 + volumes: + - ./slave/slave_1.cnf:/etc/mysql/my.cnf + - ./slave/slave.sql:/docker-entrypoint-initdb.d/start.sql + - slave_1_volume:/var/lib/mysql + # Указываем, что slave запускается только после успешного запуска master + depends_on: + - mysql-master + environment: + MYSQL_ROOT_PASSWORD: "password" + ports: + - '3307:3306' + mysql-slave-2: + image: 'percona:8.0' + container_name: mysql-slave-2 + volumes: + - ./slave/slave_2.cnf:/etc/mysql/my.cnf + - ./slave/slave.sql:/docker-entrypoint-initdb.d/start.sql + - slave_2_volume:/var/lib/mysql + # Указываем, что slave запускается только после успешного запуска master + depends_on: + - mysql-master + environment: + MYSQL_ROOT_PASSWORD: "password" + ports: + - '3308:3306' + mysql-slave-3: + image: 'percona:8.0' + container_name: mysql-slave-3 + volumes: + - ./slave/slave_3.cnf:/etc/mysql/my.cnf + - ./slave/slave.sql:/docker-entrypoint-initdb.d/start.sql + - slave_3_volume:/var/lib/mysql + # Указываем, что slave запускается только после успешного запуска master + depends_on: + - mysql-master + environment: + MYSQL_ROOT_PASSWORD: "password" + ports: + - '3309:3306' + web: + build: ./app + command: python manage.py runserver 0.0.0.0:8000 + volumes: + - ./app/:/usr/src/app/ + ports: + - 8000:8000 + env_file: + - app/.env.dev + nginx: + build: ./nginx + volumes: + - ./nginx/nginx.conf:/etc/nginx/conf.d/nginx.conf + - /etc/ssl/distrubutedatabase.crt:/etc/ssl/distrubutedatabase.crt + - /etc/ssl/distrubutedatabase.key:/etc/ssl/distrubutedatabase.key + ports: + - "443:443" + - "80:80" + depends_on: + - web + +volumes: + slave_1_volume: + slave_2_volume: + slave_3_volume: + master_volume: diff --git a/nginx/Dockerfile b/nginx/Dockerfile new file mode 100644 index 0000000..29ffd3c --- /dev/null +++ b/nginx/Dockerfile @@ -0,0 +1,4 @@ +FROM nginx:1.21-alpine + +RUN rm /etc/nginx/conf.d/default.conf +COPY nginx.conf /etc/nginx/conf.d \ No newline at end of file diff --git a/nginx/nginx.conf b/nginx/nginx.conf new file mode 100644 index 0000000..48e4551 --- /dev/null +++ b/nginx/nginx.conf @@ -0,0 +1,26 @@ +upstream distrubutedatabase { + server web:8000; +} + +server { + + listen 80; + + location / { + proxy_pass http://distrubutedatabaseb; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header Host $host; + proxy_redirect http:// https://; + } + + location /static/ { + root /app; + } + + listen 443 ssl; + + server_name distrubutedatabase.ru; + ssl_certificate /etc/ssl/distrubutedatabase.crt; + ssl_certificate_key /etc/ssl/distrubutedatabase.key; + +} \ No newline at end of file