pass
This commit is contained in:
parent
804cdd28d8
commit
573f1d422d
|
|
@ -1,117 +0,0 @@
|
||||||
|
|
||||||
listenAddressSingleHTTPFrontend: 0.0.0.0:1337
|
|
||||||
logLevel: "INFO"
|
|
||||||
showNavigation: false
|
|
||||||
pageTitle: МИС "Медицина"
|
|
||||||
showFooter: false
|
|
||||||
|
|
||||||
actionGroups:
|
|
||||||
- title: МИС
|
|
||||||
icon: 🏥
|
|
||||||
actions:
|
|
||||||
- mis-install
|
|
||||||
- mis-restart
|
|
||||||
- mis-update
|
|
||||||
|
|
||||||
- title: Обслуживание
|
|
||||||
icon: 🛠️
|
|
||||||
actions:
|
|
||||||
- ping-sync
|
|
||||||
- ping-docker
|
|
||||||
- check-disk-space
|
|
||||||
|
|
||||||
actions:
|
|
||||||
- id: mis-install
|
|
||||||
title: Установить
|
|
||||||
icon: box
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
shell: /config/medicine-install.sh "{{ organization_name }}" "{{ organization_id }}" "{{ http_port }}" "{{ https_port }}"
|
|
||||||
timeout: 600
|
|
||||||
arguments:
|
|
||||||
- name: organization_name
|
|
||||||
title: "Название организации"
|
|
||||||
default: "DEMO"
|
|
||||||
type: unicode_identifier
|
|
||||||
required: true
|
|
||||||
|
|
||||||
- name: organization_id
|
|
||||||
title: "Идентификатор организации"
|
|
||||||
default: "1234"
|
|
||||||
type: ascii_sentence
|
|
||||||
|
|
||||||
- name: http_port
|
|
||||||
title: "HTTP порт"
|
|
||||||
default: "80"
|
|
||||||
type: int
|
|
||||||
|
|
||||||
- name: https_port
|
|
||||||
title: "HTTPS порт"
|
|
||||||
default: "443"
|
|
||||||
type: int
|
|
||||||
|
|
||||||
- id: medicine-change-env
|
|
||||||
title: Изменить настройки
|
|
||||||
icon: ⚙️
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
shell: /config/medicine-change-env.sh "{{ http_port }}" "{{ https_port }}"
|
|
||||||
timeout: 600
|
|
||||||
arguments:
|
|
||||||
- name: http_port
|
|
||||||
title: "HTTP порт"
|
|
||||||
default: "80"
|
|
||||||
type: int
|
|
||||||
|
|
||||||
- name: https_port
|
|
||||||
title: "HTTPS порт"
|
|
||||||
default: "443"
|
|
||||||
type: int
|
|
||||||
|
|
||||||
- id: mis-restart
|
|
||||||
title: Перезапустить
|
|
||||||
icon: 🔄
|
|
||||||
timeout: 60
|
|
||||||
shell: /config/medicine-restart.sh
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
|
|
||||||
- id: mis-update
|
|
||||||
title: Обновить
|
|
||||||
icon: ⬆️
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
timeout: 60
|
|
||||||
shell: /config/medicine-update.sh
|
|
||||||
|
|
||||||
- id: ping-sync
|
|
||||||
title: Ping sync.med-logic.ru
|
|
||||||
shell: ping sync.med-logic.ru -c 2
|
|
||||||
icon: ping
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
|
|
||||||
- id: ping-docker
|
|
||||||
title: Ping docker.med-logic.ru
|
|
||||||
shell: ping docker.med-logic.ru -c 2
|
|
||||||
icon: ping
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
|
|
||||||
- id: check-disk-space
|
|
||||||
title: Check disk space
|
|
||||||
icon: disk
|
|
||||||
shell: df -h /media
|
|
||||||
popupOnStart: execution-dialog-stdout-only
|
|
||||||
|
|
||||||
dashboards:
|
|
||||||
- title: Главная
|
|
||||||
contents:
|
|
||||||
- title: МИС
|
|
||||||
type: fieldset
|
|
||||||
contents:
|
|
||||||
- title: Установить
|
|
||||||
- title: Перезапустить
|
|
||||||
- title: Обновить
|
|
||||||
- title: Изменить настройки
|
|
||||||
|
|
||||||
- title: "Системное"
|
|
||||||
type: fieldset
|
|
||||||
contents:
|
|
||||||
- title: Ping sync.med-logic.ru
|
|
||||||
- title: Ping docker.med-logic.ru
|
|
||||||
- title: Check disk space
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
GLOBAL_ENV_FILE="/medicine-config/.env"
|
|
||||||
ENV_FILE="/medicine-config/medicine/.env"
|
|
||||||
|
|
||||||
HTTP_PORT="$1"
|
|
||||||
HTTPS_PORT="$2"
|
|
||||||
|
|
||||||
set_env_var () {
|
|
||||||
local key="$1"
|
|
||||||
local value="$2"
|
|
||||||
|
|
||||||
if grep -qE "^${key}=" "$ENV_FILE"; then
|
|
||||||
sed -i "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
|
|
||||||
else
|
|
||||||
echo "${key}=${value}" >> "$ENV_FILE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
unset_env_var () {
|
|
||||||
local key="$1"
|
|
||||||
|
|
||||||
if grep -qE "^${key}=" "$ENV_FILE"; then
|
|
||||||
sed -i "/^${key}=/d" "$ENV_FILE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
echo "HTTP порт: $HTTP_PORT"
|
|
||||||
echo "HTTPS порт: $HTTPS_PORT"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
touch "$ENV_FILE"
|
|
||||||
touch "$GLOBAL_ENV_FILE"
|
|
||||||
|
|
||||||
if [ -n "$HTTP_PORT" ] && [ "$HTTP_PORT" != "80" ]; then
|
|
||||||
set_env_var "NGINX_HTTP_PORT" "$HTTP_PORT"
|
|
||||||
else
|
|
||||||
unset_env_var "NGINX_HTTP_PORT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$HTTPS_PORT" ] && [ "$HTTPS_PORT" != "443" ]; then
|
|
||||||
set_env_var "NGINX_HTTPS_PORT" "$HTTPS_PORT"
|
|
||||||
else
|
|
||||||
unset_env_var "NGINX_HTTPS_PORT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
(cd /medicine-config/medicine && docker compose stop && docker compose up -d)
|
|
||||||
|
|
||||||
echo "✅ Настройки изменены"
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
SECRET_KEY=$(head -c 32 /dev/urandom | base64)
|
|
||||||
NETWORK_NAME=medicine-network
|
|
||||||
GLOBAL_ENV_FILE="/medicine-config/.env"
|
|
||||||
ENV_FILE="/medicine-config/medicine/.env"
|
|
||||||
POSTGRES_CONTAINER=service-postgres
|
|
||||||
POSTGRES_USER=postgres
|
|
||||||
DB_NAME=medicine
|
|
||||||
|
|
||||||
ORGANIZATION_NAME="$1"
|
|
||||||
ORGANIZATION_ID="$2"
|
|
||||||
HTTP_PORT="$3"
|
|
||||||
HTTPS_PORT="$4"
|
|
||||||
|
|
||||||
set_global_env_var () {
|
|
||||||
local key="$1"
|
|
||||||
local value="$2"
|
|
||||||
|
|
||||||
if grep -qE "^${key}=" "$GLOBAL_ENV_FILE"; then
|
|
||||||
sed -i "s|^${key}=.*|${key}=${value}|" "$GLOBAL_ENV_FILE"
|
|
||||||
else
|
|
||||||
echo "${key}=${value}" >> "$GLOBAL_ENV_FILE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_env_var () {
|
|
||||||
local key="$1"
|
|
||||||
local value="$2"
|
|
||||||
|
|
||||||
if grep -qE "^${key}=" "$ENV_FILE"; then
|
|
||||||
sed -i "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
|
|
||||||
else
|
|
||||||
echo "${key}=${value}" >> "$ENV_FILE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
unset_env_var () {
|
|
||||||
local key="$1"
|
|
||||||
|
|
||||||
if grep -qE "^${key}=" "$ENV_FILE"; then
|
|
||||||
sed -i "/^${key}=/d" "$ENV_FILE"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [[ -z "$ORGANIZATION_NAME" || -z "$ORGANIZATION_ID" ]]; then
|
|
||||||
echo "❌ Ошибка: оба параметра обязательны"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "Название организации: $ORGANIZATION_NAME"
|
|
||||||
echo "Идентификатор организации: $ORGANIZATION_ID"
|
|
||||||
echo "HTTP порт: $HTTP_PORT"
|
|
||||||
echo "HTTPS порт: $HTTPS_PORT"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
if [ -z $(docker network ls --filter name=^${NETWORK_NAME}$ --format="{{ .Name }}") ] ; then
|
|
||||||
docker network create ${NETWORK_NAME} ;
|
|
||||||
echo "🌐 Сеть $NETWORK_NAME создана"
|
|
||||||
else
|
|
||||||
echo "🌐 Сеть $NETWORK_NAME уже существует"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📁 Создаем файлы окружения"
|
|
||||||
touch "$ENV_FILE"
|
|
||||||
touch "$GLOBAL_ENV_FILE"
|
|
||||||
|
|
||||||
set_global_env_var "ORGANIZATION_ID" "$ORGANIZATION_ID"
|
|
||||||
set_global_env_var "ORGANIZATION_NAME" "$ORGANIZATION_NAME"
|
|
||||||
set_global_env_var "POSTGRES_USER" "$POSTGRES_USER"
|
|
||||||
set_global_env_var "POSTGRES_HOST" "$POSTGRES_CONTAINER"
|
|
||||||
set_global_env_var "REDIS_HOST" "service-redis"
|
|
||||||
|
|
||||||
set_env_var "SECRET_KEY" "$SECRET_KEY"
|
|
||||||
|
|
||||||
if [ -n "$HTTP_PORT" ] && [ "$HTTP_PORT" != "80" ]; then
|
|
||||||
set_env_var "NGINX_HTTP_PORT" "$HTTP_PORT"
|
|
||||||
else
|
|
||||||
unset_env_var "NGINX_HTTP_PORT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$HTTPS_PORT" ] && [ "$HTTPS_PORT" != "443" ]; then
|
|
||||||
set_env_var "NGINX_HTTPS_PORT" "$HTTPS_PORT"
|
|
||||||
else
|
|
||||||
unset_env_var "NGINX_HTTPS_PORT"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📦 Запускаем контейнер postgres"
|
|
||||||
(cd /medicine-config/service-postgres && docker compose pull -q && docker compose up -d)
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "📦 Запускаем контейнер redis"
|
|
||||||
(cd /medicine-config/service-redis && docker compose pull -q && docker compose up -d)
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
if docker exec "$POSTGRES_CONTAINER" psql -U "$POSTGRES_USER" -tAc \
|
|
||||||
"SELECT 1 FROM pg_database WHERE datname='$DB_NAME'" | grep -q 1; then
|
|
||||||
echo "✅ База данных уже существует: $DB_NAME"
|
|
||||||
else
|
|
||||||
echo "➕ База данных не найдена, создаём: $DB_NAME"
|
|
||||||
docker exec "$POSTGRES_CONTAINER" createdb -U "$POSTGRES_USER" "$DB_NAME"
|
|
||||||
echo "✅ База данных создана: $DB_NAME"
|
|
||||||
fi
|
|
||||||
|
|
||||||
TABLES_COUNT=$(docker exec "$POSTGRES_CONTAINER" psql -U "$POSTGRES_USER" -d "$DB_NAME" -tAc \
|
|
||||||
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'public';")
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
if [ "$TABLES_COUNT" -gt 0 ]; then
|
|
||||||
echo "⚠️ Восстановление БД пропущено - в базе уже есть таблицы ($TABLES_COUNT)"
|
|
||||||
else
|
|
||||||
echo "📥 Восстанавливаем БД из бэкапа"
|
|
||||||
|
|
||||||
unzip -o /medicine-config/backups/medicine.sql.zip -d /tmp
|
|
||||||
docker cp /tmp/medicine.sql "$POSTGRES_CONTAINER:/tmp/medicine.sql"
|
|
||||||
docker exec -i "$POSTGRES_CONTAINER" psql -U "$POSTGRES_USER" -d "$DB_NAME" -q --set ON_ERROR_STOP=on -f /tmp/medicine.sql
|
|
||||||
|
|
||||||
echo "✅ Восстановление завершено"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Скачиваем образ"
|
|
||||||
docker pull docker.med-logic.ru/medicine:latest -q
|
|
||||||
docker tag docker.med-logic.ru/medicine:latest medicine:latest
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Запускаем систему"
|
|
||||||
(cd /medicine-config/medicine && docker compose up -d)
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "🎉 МИС \"Медицина\" успешно установлена"
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
(cd /medicine-config/medicine && docker compose stop && docker compose up -d)
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "✅ МИС \"Медицина\" успешно перезапущена"
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
docker pull docker.med-logic.ru/medicine:latest
|
|
||||||
|
|
||||||
(cd /medicine-config/medicine &&
|
|
||||||
docker run --rm \
|
|
||||||
--env-file .env \
|
|
||||||
--env-file /medicine-config/.env \
|
|
||||||
--network medicine-network \
|
|
||||||
--name medicine-apply-migrations \
|
|
||||||
docker.med-logic.ru/medicine:latest python manage.py migrate --noinput
|
|
||||||
)
|
|
||||||
|
|
||||||
(cd /medicine-config/medicine &&
|
|
||||||
docker compose stop &&
|
|
||||||
docker compose up -d
|
|
||||||
)
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "✅ МИС \"Медицина\" успешно обновлена"
|
|
||||||
Loading…
Reference in New Issue