Update frontend image in .env.example for contour compatibility
This commit is contained in:
parent
cb37ba000e
commit
8551d58d08
@ -13,6 +13,8 @@ SAREX_POSTGRES_PASSWORD=sarex
|
|||||||
# Приложения ходят в БД под ними, а не под суперпользователем. Без одинарных кавычек.
|
# Приложения ходят в БД под ними, а не под суперпользователем. Без одинарных кавычек.
|
||||||
SAREX_DJANGO_DB_USER=django
|
SAREX_DJANGO_DB_USER=django
|
||||||
SAREX_DJANGO_DB_PASSWORD=django-secret
|
SAREX_DJANGO_DB_PASSWORD=django-secret
|
||||||
|
# Расширения PostgreSQL для базы django (создаёт postgres-init суперпользователем)
|
||||||
|
SAREX_DJANGO_DB_EXTENSIONS=ltree
|
||||||
SAREX_PROCESSING_DB_USER=processing
|
SAREX_PROCESSING_DB_USER=processing
|
||||||
SAREX_PROCESSING_DB_PASSWORD=processing-secret
|
SAREX_PROCESSING_DB_PASSWORD=processing-secret
|
||||||
SAREX_BIM_DB_USER=bim
|
SAREX_BIM_DB_USER=bim
|
||||||
|
|||||||
@ -36,6 +36,8 @@ deploy-check = "ansible-playbook deploy.yml --check --diff"
|
|||||||
gen-env = "ansible-playbook deploy.yml --tags env"
|
gen-env = "ansible-playbook deploy.yml --tags env"
|
||||||
# docker login в приватный реестр по ключу json_key
|
# docker login в приватный реестр по ключу json_key
|
||||||
login = "ansible-playbook deploy.yml --tags login"
|
login = "ansible-playbook deploy.yml --tags login"
|
||||||
|
# сгенерировать логин+пароль и создать Django-суперпользователя в backend
|
||||||
|
superuser = "ansible-playbook deploy.yml --tags superuser"
|
||||||
lint = "ansible-lint"
|
lint = "ansible-lint"
|
||||||
|
|
||||||
# Полная подготовка окружения: uv sync + установка коллекций
|
# Полная подготовка окружения: uv sync + установка коллекций
|
||||||
|
|||||||
@ -125,3 +125,51 @@
|
|||||||
chdir: "{{ deploy_dir }}"
|
chdir: "{{ deploy_dir }}"
|
||||||
when: sarex_compose_up | bool
|
when: sarex_compose_up | bool
|
||||||
changed_when: true
|
changed_when: true
|
||||||
|
|
||||||
|
# --- Django-суперпользователь: генерация логина+пароля, создание -----------
|
||||||
|
# Логин и пароль генерируются один раз и персистятся в secrets_store
|
||||||
|
# (переиспользуются при повторе — идемпотентно).
|
||||||
|
- name: Сгенерировать логин суперпользователя
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
superuser_name: "{{ lookup('password', secrets_store ~ '/' ~ inventory_hostname ~ '/SAREX_SUPERUSER_NAME chars=ascii_lowercase,digits length=10') }}"
|
||||||
|
no_log: true
|
||||||
|
tags: [superuser]
|
||||||
|
|
||||||
|
- name: Сгенерировать пароль суперпользователя
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
superuser_password: "{{ lookup('password', secrets_store ~ '/' ~ inventory_hostname ~ '/SAREX_SUPERUSER_PASSWORD chars=ascii_letters,digits length=' ~ secret_length) }}"
|
||||||
|
no_log: true
|
||||||
|
tags: [superuser]
|
||||||
|
|
||||||
|
- name: Создать/обновить Django-суперпользователя в backend
|
||||||
|
ansible.builtin.command:
|
||||||
|
argv:
|
||||||
|
- "{{ compose_cmd.split()[0] }}"
|
||||||
|
- exec
|
||||||
|
- -e
|
||||||
|
- "SU_NAME={{ superuser_name }}"
|
||||||
|
- -e
|
||||||
|
- "SU_PASS={{ superuser_password }}"
|
||||||
|
- -e
|
||||||
|
- "SU_EMAIL={{ superuser_name }}@{{ platform_domain }}"
|
||||||
|
- sarex-backend
|
||||||
|
- python
|
||||||
|
- manage.py
|
||||||
|
- shell
|
||||||
|
- -c
|
||||||
|
- >-
|
||||||
|
import os;
|
||||||
|
from django.contrib.auth import get_user_model;
|
||||||
|
U = get_user_model();
|
||||||
|
u, c = U.objects.get_or_create(username=os.environ['SU_NAME'], defaults={'email': os.environ['SU_EMAIL']});
|
||||||
|
u.is_staff = True; u.is_superuser = True; u.set_password(os.environ['SU_PASS']); u.save();
|
||||||
|
print('created' if c else 'updated')
|
||||||
|
register: superuser_result
|
||||||
|
changed_when: true
|
||||||
|
no_log: true
|
||||||
|
tags: [superuser]
|
||||||
|
|
||||||
|
- name: Показать учётные данные суперпользователя
|
||||||
|
ansible.builtin.debug:
|
||||||
|
msg: "Django superuser → login: {{ superuser_name }} password: {{ superuser_password }}"
|
||||||
|
tags: [superuser]
|
||||||
|
|||||||
@ -147,6 +147,13 @@ services:
|
|||||||
provision "$$PROC_DB" "$$PROC_USER" "$$PROC_PASSWORD"
|
provision "$$PROC_DB" "$$PROC_USER" "$$PROC_PASSWORD"
|
||||||
provision "$$BIM_DB" "$$BIM_USER" "$$BIM_PASSWORD"
|
provision "$$BIM_DB" "$$BIM_USER" "$$BIM_PASSWORD"
|
||||||
provision "$$WORKSPACE_DB" "$$WORKSPACE_USER" "$$WORKSPACE_PASSWORD"
|
provision "$$WORKSPACE_DB" "$$WORKSPACE_USER" "$$WORKSPACE_PASSWORD"
|
||||||
|
|
||||||
|
# Расширения PostgreSQL в базе django: CREATE EXTENSION может только
|
||||||
|
# суперпользователь. Django-миграции (CreateExtension) идут с IF NOT
|
||||||
|
# EXISTS → после этого станут no-op и не упадут на правах.
|
||||||
|
for ext in $$DJANGO_EXTENSIONS; do
|
||||||
|
q -c "CREATE EXTENSION IF NOT EXISTS \"$$ext\"" && echo "extension $$ext ready in $$DJANGO_DB"
|
||||||
|
done
|
||||||
environment:
|
environment:
|
||||||
PGPASSWORD: ${SAREX_POSTGRES_PASSWORD:-sarex}
|
PGPASSWORD: ${SAREX_POSTGRES_PASSWORD:-sarex}
|
||||||
SUPER_USER: ${SAREX_POSTGRES_USER:-sarex}
|
SUPER_USER: ${SAREX_POSTGRES_USER:-sarex}
|
||||||
@ -155,6 +162,7 @@ services:
|
|||||||
DJANGO_DB: ${SAREX_POSTGRES_DB:-sarex_db}
|
DJANGO_DB: ${SAREX_POSTGRES_DB:-sarex_db}
|
||||||
DJANGO_USER: ${SAREX_DJANGO_DB_USER:-django}
|
DJANGO_USER: ${SAREX_DJANGO_DB_USER:-django}
|
||||||
DJANGO_PASSWORD: ${SAREX_DJANGO_DB_PASSWORD:-django-secret}
|
DJANGO_PASSWORD: ${SAREX_DJANGO_DB_PASSWORD:-django-secret}
|
||||||
|
DJANGO_EXTENSIONS: ${SAREX_DJANGO_DB_EXTENSIONS:-ltree}
|
||||||
# processing
|
# processing
|
||||||
PROC_DB: ${SAREX_PROCESSING_DB:-workflow_db}
|
PROC_DB: ${SAREX_PROCESSING_DB:-workflow_db}
|
||||||
PROC_USER: ${SAREX_PROCESSING_DB_USER:-processing}
|
PROC_USER: ${SAREX_PROCESSING_DB_USER:-processing}
|
||||||
|
|||||||
@ -27,7 +27,7 @@ map $http_upgrade $connection_upgrade {
|
|||||||
}
|
}
|
||||||
|
|
||||||
upstream backend { server backend:8000; }
|
upstream backend { server backend:8000; }
|
||||||
# upstream frontend { server frontend:80; } # frontend пока не поднят
|
upstream frontend { server frontend:80; }
|
||||||
upstream minio_s3 { server minio:9000; }
|
upstream minio_s3 { server minio:9000; }
|
||||||
upstream minio_console { server minio:9001; }
|
upstream minio_console { server minio:9001; }
|
||||||
upstream rabbitmq_mgmt { server rabbitmq:15672; }
|
upstream rabbitmq_mgmt { server rabbitmq:15672; }
|
||||||
@ -55,6 +55,15 @@ server {
|
|||||||
return 200 "ok\n";
|
return 200 "ok\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Рантайм-конфиг фронта. Прод-сборка по умолчанию уходит в zitadel, которого
|
||||||
|
# тут нет, — форсим классический вход через backend (auth_type=original).
|
||||||
|
# Отдаём сами: в образе frontend этого файла нет (был бы 404).
|
||||||
|
location = /static/config.json {
|
||||||
|
default_type application/json;
|
||||||
|
add_header Cache-Control "no-store";
|
||||||
|
return 200 '{"auth_type":"original"}';
|
||||||
|
}
|
||||||
|
|
||||||
# Django backend: REST API + админка
|
# Django backend: REST API + админка
|
||||||
location /api/ { proxy_pass http://backend; }
|
location /api/ { proxy_pass http://backend; }
|
||||||
location /admin/ { proxy_pass http://backend; }
|
location /admin/ { proxy_pass http://backend; }
|
||||||
@ -96,17 +105,17 @@ server {
|
|||||||
# proxy_pass http://minio_s3;
|
# proxy_pass http://minio_s3;
|
||||||
# }
|
# }
|
||||||
|
|
||||||
# Frontend SPA (host-приложение само отдаёт статику и роутинг) (TODO: в работе)
|
# Frontend SPA (host-приложение само отдаёт статику и роутинг)
|
||||||
# location / {
|
location / {
|
||||||
# proxy_set_header Host $host;
|
proxy_set_header Host $host;
|
||||||
# proxy_set_header X-Real-IP $remote_addr;
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
# proxy_set_header X-Forwarded-Proto $scheme;
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
# proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
# proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
# proxy_set_header Connection $connection_upgrade;
|
proxy_set_header Connection $connection_upgrade;
|
||||||
# proxy_pass http://frontend;
|
proxy_pass http://frontend;
|
||||||
# }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# ======================= Admin: RabbitMQ management UI ======================
|
# ======================= Admin: RabbitMQ management UI ======================
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user