> For the complete documentation index, see [llms.txt](https://enterprise-ipi-ua.hideez.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://enterprise-ipi-ua.hideez.com/korporativnii-server-ipi/rozgortannya/onovlennya-hes/docker.md).

# Docker

### Щоб оновити сервер IES для Docker, вам потрібно:

1. Оновіть усі програми IPI Client до 3.16.Х.
2. Вимкніть захист даних на IES.
3. Оновіть сервер, дотримуючись інструкцій нижче.
4. Увімкніть захист даних знову (див. крок 2)

### Створіть директорію для резервного копіювання

```
$ sudo mkdir /opt/IES.old
```

Резервне копіювання бази даних (оптимально для можливого подальшого відновлення):

* MySQL Database:

Наступна команда створить копію бази даних (dump) у файлі `db.sql` у директорії /opt/IES.old (на хості) з контейнера з назвою `hes-mysql:`

```
$ cd /opt/IES/
$ sudo sh -c "docker exec hes-mysql /usr/bin/mysqldump -u root --password=password db > /opt/IES.old/db.sql"
```

* MS SQL Database:

Наступна команда створить резервну копію бази даних `db` у файлі `db.bak` у локальній директорії `/opt/IES/mssql/data/`:

```
 $ cd /opt/IES/
 $ sudo docker exec -it hes-mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "C00ll_Passwrd_here"  -Q "BACKUP DATABASE [db] TO DISK = N'/var/opt/mssql/data/db.bak' WITH NOFORMAT, NOINIT, NAME = 'db-full', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
```

Замініть "C00ll\_Passwrd\_here", ввівши свій пароль, який ви вказали у файлі `/opt/IES/docker-compose.yml`.

### Зупинка контейнерів:

```
$ cd /opt/IES/
$ sudo docker compose down
```

(Оптимально) Збережіть образ IES у файл tar (для можливого подальшого відновлення):

```
$ sudo docker save -o /opt/IES.old/hes.tar hes
```

### Remove image of IES:

```
$ sudo docker rmi hes --force
```

Щоб оновити сервер до останньої версії, виконайте команди:

```
$ sudo docker build . -t hes
```

І перезапустіть контейнери:

```
$ sudo docker compose up -d
```

### Якщо щось піде не так, ви можете відновити сервер IES за допомогою таких команд:

Зупинити контейнери:

```
$ cd /opt/IES/
$ sudo docker compose down
```

Видалити образи IES:

```
$ sudo docker rmi hes --force
```

Відновити базу даних

* My SQL:

Запустити тільки контейнер MySQL:

```
$ sudo docker compose up -d hes-mysql
```

Відновити базу даних MySQL з dump -файлу

```
$ sudo cat /opt/IES.old/db.sql | sudo docker exec -i hes-mysql /usr/bin/mysql -u root --password=password db
$ sudo docker compose down 
```

* MS SQL:

Запустіть лише контейнер MS SQL:

```
$ sudo docker compose up -d hes-mssql
```

Відновити базу даних MS SQL з bak-файлу:

```
 $ cd /opt/IES/
 $ sudo docker exec -it hes-mssql /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "C00ll_Passwrd_here"  -Q "RESTORE DATABASE [db] FROM DISK = N'/var/opt/mssql/data/db.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5"
```

Замініть "C00ll\_Passwrd\_here", ввівши свій пароль, який ви вказали у файлі `/opt/IES/docker-compose.yml`

Відновити старий образ IES з файлу tar:

```
$ sudo docker load -i /opt/IES.old/hes.tar
```

і початкові контейнери:

```
$ sudo docker compose up -d
```

### Перевіривши, що оновлення пройшло успішно і все працює нормально, ви можете видалити копії бази даних і сервера:

```
$ sudo rm -rf /opt/IES.old
```
