1
0
Fork 0
This commit is contained in:
Ilya Mukhortov 2026-01-13 16:50:21 +10:00
parent 84bc9bbec6
commit 03ced1a26a
65 changed files with 456 additions and 894 deletions

11
.gitignore vendored
View File

@ -6,17 +6,10 @@
*.sln
__pycache__
.DS_Store
.idea/*
.vs/*
.env
docker-compose.override.yml
.idea/*
.vs/*
volumes/*
medicine/.env
medicine/docker-compose.override.yml
medicine/volumes/*
medicine-stack/volumes/*
thirdparty-apps/volumes/*

View File

@ -1,84 +0,0 @@
### Решение проблем
> Error saving credentials: error storing credentials - err: exit status 1, out: `Cannot autolaunch D-Bus without X11 $DISPLAY`
`> sudo apt remove golang-docker-credential-helpers`
> Git ignore rights
` > git config core.fileMode false`
### Ключи
#### Добавление ключика на удаленный сервер (root)
ssh-copy-id -i ~/.ssh/medlogic_awx_rsa.pub -p 22 root@remote
#### Добавление ключика на удаленный сервер (no root)
cat ~/.ssh/medlogic_awx_rsa.pub | ssh user@remote "sudo cat >> /root/.ssh/authorized_keys"
### Настройка сервера
> vim /etc/ssh/sshd_config
PermitRootLogin without-password
# Авторизация по паролю root
PermitRootLogin yes
PubkeyAuthentication yes
> service ssh restart
### Обратный ssh
на удаленном сервере
ssh -R 40022:localhost:22 proxy_user@188.225.79.4
на доступном сервере
ssh localhost -p 40022
### Crontab tasks
PATH=/usr/bin:/bin:/usr/local/bin
00 21 * * * /root/medicine-config/update_repository.sh
00 22 * * * /root/medicine-config/medicine/backup_database.sh
00 23 * * * /root/medicine-config/medicine/update.sh
00 22 * * * /root/medicine-config/medicine-remd/backup_database.sh
30 23 * * * /root/medicine-config/medicine-remd/update.sh
00 00 * * * /root/medicine-config/scripts/docker-cleanup.sh
00 21 * * * /root/medicine-config/update_repository.sh
00 22 * * * /root/medicine-config/medicine/backup_database.sh
00 23 * * * /root/medicine-config/medicine/update.sh
00 00 * * * /root/medicine-config/scripts/docker-cleanup.sh
0 * * * * sudo vipnetclient info
* * * * * /root/medicine-config/scripts/crontab-check.sh >> /var/log/crontab-check.log 2>&1
sudo timedatectl set-timezone Asia/Vladivostok
# /etc/hosts
> sudo vim /etc/hosts
89.223.70.16 docker.med-logic.ru git.med-logic.ru
# change git url
git remote set-url origin https://git.med-logic.ru/ilya.muhortov/medicine-config.git && git pull
### Перенос данных
scp -r /var/lib/docker/volumes/medicine_medicine-public-data/_data root@hostname:/var/lib/docker/volumes/medicine_medicine-public-data
# Разное
curl -iv --tlsv1.2 https://docker.med-logic.ru/
# Копирование в бэкапов в папку
rsync -avh /root/medicine-backups /root/remote-backups/

View File

@ -1,29 +0,0 @@
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/medicine-remd:latest
read -r -p "Create database? [y/N] " response
if [[ $response =~ ^[Yy](es)?$ ]]; then
docker exec medicine-stack-postgres psql -c 'CREATE DATABASE medicine_remd' --username=postgres
fi
read -p "Enter organization name: " ORGANIZATION_NAME
SECRET_KEY=$(openssl rand -base64 32)
cat <<EOT >> /root/medicine-config/medicine-remd/.env
SECRET_KEY=$SECRET_KEY
SENTRY_ENABLED='True'
SENTRY_SERVER_NAME=$ORGANIZATION_NAME
EOT
cd /root/medicine-config/medicine-remd
docker-compose run --rm medicine-remd python manage.py migrate
docker-compose run --rm medicine-remd python manage.py post_install
docker-compose up -d

View File

@ -1,30 +0,0 @@
set -e
apt install --assume-yes autossh
ssh-keygen -f ~/.ssh/proxy-server -N ''
ssh-copy-id -i ~/.ssh/proxy-server.pub -p 22 proxy_user@188.225.79.4
read -p "Enter port for proxy server: " proxy_port
cat <<EOT >> /etc/systemd/system/remote-autossh.service
[Unit]
Description=AutoSSH service for remote tunnel
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service
[Service]
User=root
Restart=on-failure
RestartSec=1min
ExecStart=/usr/bin/autossh -N -R $proxy_port:localhost:22 -i /root/.ssh/proxy-server proxy_user@188.225.79.4
[Install]
WantedBy=multi-user.target
EOT
systemctl daemon-reload && systemctl start remote-autossh
systemctl enable remote-autossh.service
cat <<EOT >> /root/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyPQET8KBriZjuB1PiFtBYtGZJphivZWHT4JtGJNDLpwxyUgK6ZzVrF5MvJ27eQBoM1pMxzVl3XWwgxo1BQkCGIsqERwZ5/onfsWTH/COyuZeNmL5NF3NYLjoSF9a0zwHpEQxeLGf+3qQrEfTOZKuPelc/8kmQjYDPo97Ow3d+6LA9Mlhe2S7pYsvVgGy+XjGnegRZddAZu6vnDCGrDbfSgeW0KTQCLhGmtQao99SRxUOlqHfU13x9IZAHldikbhWbXxgc1+1CH/1iYbRqnVdgAAyJzguFIkAJGKzEnLiwHVgJF1Gf85FItF8KaNHCIv5T7RPBvFUIN/gw3QO/jTxJ root@1041123-muhortov1.tmweb.ru
EOT

View File

@ -1,6 +0,0 @@
set -e
cd /root/medicine-config/thirdparty-apps
docker-compose pull
docker-compose build
docker-compose up -d

View File

@ -0,0 +1,117 @@
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

View File

@ -0,0 +1,51 @@
#!/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 "✅ Настройки изменены"

View File

@ -0,0 +1,135 @@
#!/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 "🎉 МИС \"Медицина\" успешно установлена"

View File

@ -0,0 +1,8 @@
#!/bin/bash
set -e
set -o pipefail
(cd /medicine-config/medicine && docker compose stop && docker compose up -d)
echo ""
echo "✅ МИС \"Медицина\" успешно перезапущена"

View File

@ -0,0 +1,22 @@
#!/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 "✅ МИС \"Медицина\" успешно обновлена"

View File

@ -0,0 +1,29 @@
networks:
medicine-network:
external: true
volumes:
medicine-dashboard-config:
name: medicine-dashboard-config
services:
dashboard:
container_name: medicine-dashboard
image: medicine-dashboard:latest
restart: always
privileged: true
user: root
networks:
- medicine-network
volumes:
- ../:/medicine-config
- ./config:/config
- /var/run/docker.sock:/var/run/docker.sock
ports:
- "800:1337"
logging:
driver: "json-file"
options:
max-size: "5mb"
max-file: "10"

View File

@ -1,24 +0,0 @@
version: '3'
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: "always"
ports:
- 881:5001
networks:
- medicine-network
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- dockge-data:/app/data
- /root/medicine-config:/root/medicine-config
environment:
- DOCKGE_STACKS_DIR=/root/medicine-config
networks:
medicine-network:
external: true
volumes:
dockge-data:

View File

@ -1,21 +0,0 @@
version: '3'
services:
medicine-call:
restart: "always"
image: docker.med-logic.ru/medicine-call:latest
container_name: medicine-call
env_file: .env
ports:
- "878:80"
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose exec medicine-call bash

View File

@ -1,16 +0,0 @@
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/medicine-call:latest
cd /root/medicine-config/medicine-stack
docker-compose exec postgres psql -c 'CREATE DATABASE medicine_call' --username=postgres
cat <<EOT >> /root/medicine-config/medicine-call/.env
EOT
cd /root/medicine-config/medicine-damask
docker-compose run --rm medicine-call python manage.py migrate
docker-compose run --rm medicine-call python manage.py post_install
docker-compose up -d

View File

@ -1,2 +0,0 @@
docker-compose stop
docker-compose up -d

View File

@ -1,7 +0,0 @@
set -e
docker pull docker.med-logic.ru/medicine-call:latest
docker-compose stop
docker-compose up -d
docker rmi $(docker images -f "dangling=true" -q)

View File

@ -1,21 +0,0 @@
version: '3'
services:
medicine-damask:
restart: "always"
image: docker.med-logic.ru/medicine-damask:latest
container_name: medicine-damask
env_file: .env
ports:
- "877:80"
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose exec medicine-damask bash

View File

@ -1,16 +0,0 @@
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/medicine-damask:latest
cd /root/medicine-config/medicine-stack
docker-compose exec postgres psql -c 'CREATE DATABASE medicine_damask' --username=postgres
cat <<EOT >> /root/medicine-config/medicine-damask/.env
EOT
cd /root/medicine-config/medicine-damask
docker-compose run --rm medicine-damask python manage.py migrate
docker-compose run --rm medicine-damask python manage.py post_install
docker-compose up -d

View File

@ -1,2 +0,0 @@
docker-compose stop
docker-compose up -d

View File

@ -1,7 +0,0 @@
set -e
docker pull docker.med-logic.ru/medicine-damask:latest
docker-compose stop
docker-compose up -d
docker rmi $(docker images -f "dangling=true" -q)

View File

@ -1,31 +0,0 @@
version: '3.4'
services:
medicine-import:
restart: "always"
container_name: "medicine-import"
image: docker.med-logic.ru/medicine-import:latest
environment:
POSTGRES_USER: postgres
POSTGRES_DB: medicine_import
REDIS_CELERY_DB: 12
security_opt:
- seccomp:unconfined
volumes:
- ./public:/app/public
ports:
- "875:80"
networks:
- medicine-network
#extra_hosts:
# - "host.docker.internal:host-gateway"
external_links:
- "postgres:postgres-host"
- "redis:redis-host"
networks:
medicine-network:
external:
name: "medicine-network"

View File

@ -1,12 +0,0 @@
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/medicine-import:latest
cd /root/medicine-config/medicine-stack
docker-compose exec postgres psql -c 'CREATE DATABASE medicine_import' --username=postgres
cd /root/medicine-config/medicine-import
docker-compose run --rm medicine-import python manage.py post_install
docker-compose up -d

View File

@ -1,29 +0,0 @@
version: '3'
services:
medicine-lis-receiver:
restart: "always"
image: docker.med-logic.ru/medicine-lis-receiver:latest
container_name: medicine-lis-receiver
environment:
DATABASE_URL: postgres:password@medicine-stack-postgres/medicine
SUPERVISOR_HTTP_USERNAME: admin
SUPERVISOR_HTTP_PASSWORD: p@ssword
ports:
- "9501:800"
- "5100:800"
- "810:810"
networks:
- medicine-network
volumes:
- ./supervisor_confs:/supervisor_confs
- ./streams:/streams
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,2 +0,0 @@
docker-compose stop
docker-compose up -d

View File

@ -1,26 +0,0 @@
version: '3'
services:
medicine-lis:
restart: "always"
image: docker.med-logic.ru/medicine-lis:latest
container_name: medicine-lis
env_file: .env
ports:
- "876:80"
- "5500-5510:5500-5510"
security_opt:
- seccomp:unconfined
networks:
- medicine-network
volumes:
- ./supervisor_confs:/supervisor_confs
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,14 +0,0 @@
set -e
docker pull docker.med-logic.ru/medicine-lis:latest
cd /root/medicine-config/medicine-stack
docker-compose exec postgres psql -c 'CREATE DATABASE medicine_lis' --username=postgres
cat <<EOT >> /root/medicine-config/medicine-lis/.env
EOT
cd /root/medicine-config/medicine-lis
docker-compose run --rm medicine-lis python manage.py migrate
docker-compose run --rm medicine-lis python manage.py post_install
docker-compose up -d

View File

@ -1,2 +0,0 @@
docker-compose logs --tail 100 --follow

View File

@ -1,2 +0,0 @@
docker-compose stop
docker-compose up -d

View File

@ -1,7 +0,0 @@
set -e
docker pull docker.med-logic.ru/medicine-lis:latest
docker-compose stop
docker-compose up -d
docker rmi $(docker images -f "dangling=true" -q)

View File

@ -1,19 +0,0 @@
#!/bin/sh
set -e
export LC_ALL=C
mkdir -p /root/medicine-backups/
cd /root/medicine-backups/
weekday_number=$(date +%u)
weekday=$(date +%A | tr '[:upper:]' '[:lower:]')
backup_filename="medicine_remd_${weekday_number}_${weekday}.sql"
archive_filename="medicine_remd_${weekday_number}_${weekday}.tar.gz"
docker exec -i medicine-stack-postgres pg_dump --no-owner -U postgres -F p medicine_remd > "${backup_filename}"
if test -f "${archive_filename}"; then
rm "${archive_filename}"
fi
tar -czf "${archive_filename}" "${backup_filename}"
rm "${backup_filename}"

View File

@ -1,35 +0,0 @@
version: '3'
services:
medicine-remd:
restart: "always"
image: docker.med-logic.ru/medicine-remd:latest
container_name: medicine-remd
env_file: .env
environment:
UWSGI_PROCESSES: 2
UWSGI_THREADS: 2
SECRET_KEY: ${SECRET_KEY}
SENTRY_ENABLED: ${SENTRY_ENABLED}
SENTRY_SERVER_NAME: ${SENTRY_SERVER_NAME}
security_opt:
- seccomp:unconfined
ports:
- "870:80"
volumes:
- ./public:/app/public
networks:
- medicine-network
extra_hosts:
- "sync.med-logic.ru:89.223.70.16"
- "sentry.med-logic.ru:89.223.70.16"
- "org.med-logic.ru:89.223.70.16"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose logs --tail 100 --follow

View File

@ -1,4 +0,0 @@
#!/bin/sh
docker-compose stop
docker-compose up -d

View File

@ -1,11 +0,0 @@
#!/bin/sh
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/medicine-remd:latest
(cd /root/medicine-config/medicine-remd &&
docker-compose stop &&
docker-compose up -d
)

View File

@ -1,41 +0,0 @@
version: '3'
services:
redis:
container_name: medicine-stack-redis
image: redis:5.0.6
restart: "always"
command: redis-server --maxmemory-policy allkeys-lru --maxclients 10000
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
postgres:
container_name: medicine-stack-postgres
image: postgres:12.2
shm_size: 1gb
command: postgres -c shared_buffers=512MB -c work_mem=8MB
restart: "always"
networks:
- medicine-network
environment:
POSTGRES_USER: "postgres"
POSTGRES_PASSWORD: "password"
volumes:
- ./volumes/postgres-data:/var/lib/postgresql/data
- ../volumes/files:/files
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,17 +0,0 @@
version: '3'
services:
medicine-timetable:
image: docker.med-logic.ru/medicine-timetable
container_name: "medicine-timetable"
restart: "always"
ports:
- "882:80"
networks:
- medicine-network
networks:
medicine-network:
external: true

View File

@ -1,22 +0,0 @@
#!/bin/sh
set -e
export LC_ALL=C
mkdir -p /root/medicine-backups/
cd /root/medicine-backups/
weekday_number=$(date +%u)
weekday=$(date +%A | tr '[:upper:]' '[:lower:]')
backup_filename="medicine_${weekday_number}_${weekday}.sql"
archive_filename="medicine_${weekday_number}_${weekday}.tar.gz"
docker exec -i medicine-stack-postgres pg_dump --no-owner -U postgres -F p medicine > "${backup_filename}" \
--exclude-table-data=riisz_logging \
--exclude-table-data=reversion_*
if test -f "${archive_filename}"; then
rm "${archive_filename}"
fi
tar -czf "${archive_filename}" "${backup_filename}"
rm "${backup_filename}"

View File

@ -1,13 +0,0 @@
#!/bin/sh
set -e
mkdir -p /root/medicine-backups/
cd /root/medicine-backups/
archive_filename="medicine_media.zip"
if test -f "${archive_filename}"; then
rm "${archive_filename}"
fi
zip -r "${archive_filename}" /var/lib/docker/volumes/medicine_medicine-public-data/_data/media

View File

@ -1,65 +1,45 @@
version: '3.4'
services:
app:
image: docker.med-logic.ru/medicine:latest
container_name: medicine-app
restart: "always"
env_file: .env
environment:
UWSGI_PROCESSES: ${UWSGI_PROCESSES:-2}
UWSGI_THREADS: ${UWSGI_THREADS:-4}
ports:
- "${NGINX_PORT:-80}:80"
- "${NGINX_HTTPS_PORT:-443}:443"
volumes:
- medicine-public-data:/app/public
- medicine-files:/app/public/media/files
networks:
- medicine-network
extra_hosts:
- "sync.med-logic.ru:89.223.70.16"
- "sentry.med-logic.ru:89.223.70.16"
- "files.med-logic.ru:89.223.70.16"
- "git.med-logic.ru:89.223.70.16"
- "org.med-logic.ru:89.223.70.16"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
tasks:
image: docker.med-logic.ru/medicine:latest
container_name: medicine-tasks
restart: "always"
command: /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord-tasks.conf
env_file: .env
environment:
CELERY_WORKER_CONCURRENCY: ${CELERY_WORKER_CONCURRENCY:-2}
volumes:
- medicine-public-data:/app/public
networks:
- medicine-network
extra_hosts:
- "sync.med-logic.ru:89.223.70.16"
- "sentry.med-logic.ru:89.223.70.16"
- "files.med-logic.ru:89.223.70.16"
- "git.med-logic.ru:89.223.70.16"
- "org.med-logic.ru:89.223.70.16"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
volumes:
medicine-public-data:
medicine-files:
name: medicine-files
name: medicine-public-data
networks:
medicine-network:
external: true
x-common: &common-params
image: medicine:latest
restart: always
env_file:
- ../.env
- .env
volumes:
- medicine-public-data:/app/public
networks:
- medicine-network
extra_hosts:
- "sync.med-logic.ru:89.223.70.16"
- "sentry.med-logic.ru:89.223.70.16"
logging:
driver: "json-file"
options:
max-size: "5mb"
max-file: "10"
services:
app:
<<: *common-params
container_name: medicine-app
environment:
UWSGI_PROCESSES: ${UWSGI_PROCESSES:-2}
UWSGI_THREADS: ${UWSGI_THREADS:-4}
ports:
- "${NGINX_HTTP_PORT:-80}:80"
- "${NGINX_HTTPS_PORT:-443}:443"
tasks:
<<: *common-params
container_name: medicine-tasks
command: /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord-tasks.conf
environment:
CELERY_WORKER_CONCURRENCY: ${CELERY_WORKER_CONCURRENCY:-2}

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose exec app bash

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose logs --tail 100 --follow

View File

@ -1,5 +0,0 @@
set -e
docker stop medicine-app medicine-tasks
docker exec medicine-stack-postgres psql -c 'DROP DATABASE medicine' --username=postgres
docker exec medicine-stack-postgres psql -c 'CREATE DATABASE medicine' --username=postgres

View File

@ -1,7 +0,0 @@
#!/bin/sh
set -e
(cd /root/medicine-config/medicine &&
docker-compose exec python manage.py reset_password
)

View File

@ -1,4 +0,0 @@
#!/bin/sh
docker-compose stop
docker-compose up -d

View File

@ -1,18 +0,0 @@
#!/bin/sh
set -e
docker pull docker.med-logic.ru/medicine:latest
(cd /root/medicine-config/medicine &&
docker run --rm \
--env-file .env \
--network medicine-network \
--name medicine-apply-migrations \
docker.med-logic.ru/medicine:latest python manage.py migrate --noinput
)
(cd /root/medicine-config/medicine &&
docker-compose stop &&
docker-compose up -d
)

View File

@ -1,24 +0,0 @@
version: '3'
services:
service-messaging:
restart: "always"
image: docker.med-logic.ru/medicine-ntf:latest
container_name: service-messaging
env_file: .env
environment:
UWSGI_PROCESSES: 2
UWSGI_THREADS: 2
ports:
- "872:80"
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
medicine-network:
external: true

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose exec service-messaging bash

View File

@ -1,26 +0,0 @@
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/medicine-ntf:latest
read -r -p "Create database? [y/N] " response
if [[ $prompt =~ [yY](es)* ]]
then
cd /root/medicine-config/medicine-stack
docker-compose exec postgres psql -c 'CREATE DATABASE service_messaging' --username=postgres
fi
read -p "Enter organization name: " ORGANIZATION_NAME
SECRET_KEY=$(openssl rand -base64 32)
cat <<EOT >> /root/medicine-config/service-messaging/.env
SECRET_KEY=$SECRET_KEY
SENTRY_ENABLED='True'
SENTRY_SERVER_NAME=$ORGANIZATION_NAME
EOT

View File

@ -1,3 +0,0 @@
#!/bin/sh
docker-compose logs --tail 100 --follow

View File

@ -1,4 +0,0 @@
#!/bin/sh
docker-compose stop
docker-compose up -d

View File

@ -1,7 +0,0 @@
set -e
docker pull docker.med-logic.ru/medicine-ntf:latest
docker-compose stop
docker-compose up -d
docker-compose run --rm service-messaging python manage.py migrate

View File

@ -0,0 +1,36 @@
networks:
medicine-network:
external: true
volumes:
postgres-data:
name: medicine-postgres-data
services:
postgres:
image: postgres:15
container_name: service-postgres
restart: always
shm_size: 1gb
command: >
postgres
-c shared_buffers=512MB
-c work_mem=4MB
-c max_connections=200
networks:
- medicine-network
environment:
POSTGRES_USER: ${MEDICINE_POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${MEDICINE_POSTGRES_PASSWORD:-password}
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 10s
timeout: 5s
retries: 5
volumes:
- postgres-data:/var/lib/postgresql/data
logging:
driver: "json-file"
options:
max-size: "5m"
max-file: "5"

View File

@ -0,0 +1,18 @@
networks:
medicine-network:
external: true
services:
redis:
container_name: service-redis
image: redis:5.0.6
restart: "always"
command: redis-server --loglevel warning --maxmemory-policy allkeys-lru --maxclients 10000
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "5m"
max-file: "5"

View File

@ -1,3 +0,0 @@
lsb_release -d -s
df -h /dev/sda1 | sed 1d | awk '{print $4}'

View File

@ -1,20 +0,0 @@
version: '3'
services:
tfoms-patient:
container_name: tfoms-patient
restart: "always"
image: docker.med-logic.ru/tfoms-patient:latest
environment:
- SENTRY_SITE=${SENTRY_SITE}
- SQLALCHEMY_DATABASE_URI=postgresql://postgres:password@medicine-stack-postgres/tfoms_patient
ports:
- "880:80"
networks:
- medicine-network
networks:
medicine-network:
external: true

View File

@ -1,13 +0,0 @@
set -e
echo "readonly" | docker login docker.med-logic.ru --username readonly --password-stdin
docker pull docker.med-logic.ru/tfoms-patient:latest
read -p "Enter organization name: " ORGANIZATION_NAME
cat <<EOT >> /root/medicine-config/tfoms-patient/.env
SENTRY_SITE=$ORGANIZATION_NAME
EOT
cd /root/medicine-config/tfoms-patient && docker-compose up -d

View File

@ -1,4 +0,0 @@
#!/bin/sh
docker-compose stop
docker-compose up -d

View File

@ -1,5 +0,0 @@
#!/bin/sh
docker pull docker.med-logic.ru/tfoms-patient:latest
docker-compose stop
docker-compose up -d

View File

@ -1,5 +0,0 @@
FROM python:3.8
RUN pip install flower==0.9.7
RUN pip install redis

View File

@ -1,79 +0,0 @@
version: '3.4'
services:
pgadmin:
image: dpage/pgadmin4:4.23
container_name: "thirdparty-pgadmin"
restart: "always"
external_links:
- "postgres:postgres-host"
environment:
PGADMIN_DEFAULT_EMAIL: "admin"
PGADMIN_DEFAULT_PASSWORD: "pgadmin-pass"
ports:
- "851:80"
volumes:
- pgadmin-data:/var/lib/pgadmin
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
filebrowser:
image: filebrowser/filebrowser:v2.31.2
container_name: "thirdparty-filebrowser"
restart: "always"
ports:
- "856:80"
volumes:
- filebrowser-data:/etc
- ../volumes/files:/srv/volumes
- medicine-files:/srv/medicine-files
networks:
- medicine-network
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
flower:
restart: "always"
container_name: "thirdparty-flower"
command: >
flower
--port=852
--broker=redis://redis-host:6379/2
--broker_api=redis://redis-host:6379/2
--basic_auth=admin:flower-pass
--max_workers=2
--max_tasks=500
build:
context: ./
dockerfile: ./Dockerfile-flower
external_links:
- "redis:redis-host"
networks:
- medicine-network
ports:
- "852:852"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
volumes:
pgadmin-data:
filebrowser-data:
medicine-files:
external: true
networks:
medicine-network:
external:
name: "medicine-network"

View File

@ -1,8 +0,0 @@
#!/bin/sh
docker-compose stop
docker-compose pull
docker-compose build
docker-compose up -d
chmod +x update.sh

View File

@ -1,22 +0,0 @@
version: '3'
services:
thumbgen:
restart: "always"
image: "docker.med-logic.ru/thumbgen:latest"
container_name: "service-thumbgen"
ports:
- "820:80"
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
networks:
- medicine-network
networks:
medicine-network:
external: true