# Как поднять PostgreSQL локально

1. Установить **[docker desktop]**;

2. Как-то сохранить `docker-compose.yml`, т.е.:
  - либо скачать файл **[docker-compose.yml](./docker-compose.yml)**;
  - либо склонировать репозиторий в терминале, где есть git (`git clone
https://cs-shelter.xyz/ottergottaott/minor-sql-2022.git`);

3. Открыть терминал:
  - PowerShell в Windows, _а лучше **[Windows Subsystem for Linux][wsl]**_;
  - iTerm в macOS;

4. С помощью команд, приведённых ниже, перейдите в склонированный
репозиторий/место, куда сохранили `docker-compose.yml`:
  - `cd` - перейти в директорию;
  - `pwd` - вывести текущую директорию;
  - `ls` - вывести содержимое текущей директории;

5. Выполните команду, написанную ниже, она запустит контейнеры (_считайте,
что это такие маленькие компьютеры с linux и нужными библиотеками, в т.ч. с
самим postgres_), в которых будут база данных и админка.

Выполнять нужно команды, написанные **ПОСЛЕ** знака `$`, сам `$` писать не нужно:
```sh
$ docker compose up -d 
```

6. Убедитесь, что контейнеры поднялись, с помощью `ps`, должно быть выведено
что-то вроде:
```sh
$ docker compose ps
NAME                 COMMAND                  SERVICE             STATUS              PORTS
pgadmin4_container   "/entrypoint.sh"         pgadmin             running             443/tcp, 0.0.0.0:5050->80/tcp
postgres_container   "docker-entrypoint.s…"   postgres            running             0.0.0.0:5432->5432/tcp```
```

Если нет, то внимательно убедитесь, что правильно выполнили все предыдущие шаги.

7. Теперь можно открыть в браузере **[localhost:5050](http://localhost:5050)**
и авторизоваться со следующими учётными данными:
  - **логин/email**: `pgadmin@pgadmin.org` 
  - **пароль**: `pgadmin`

8. Откройте Dashboard, если он не открылся:

![Dashboard tab](./pics/link_to_dash.png)

9. Далее `Add New Server`, чтобы подключить открытую админку `pgAdmin` к базе
данных, которая запущена в другом контейнере.

![Add New Server](./pics/add_new_data.png)

10. Введите _любое_ имя, например, `main` в поле `Name`.

![Name server](./pics/name_main.png)

11. Перейдите на вкладку `Connection`.

![Connection](./pics/connection.png)

12. Во вкладке `Connection` сделайте несколько действий

- Введите:
    - **Host name**: `postgres`
    - **Password**: `changeme`
- Обязательно нажмите радиокнопку `Save Password?`.
- Нажмите кнопку `Save`.

![Finish connection](./pics/full_connection.png)

15. _Вы прекрасны!_ Слева можно открыть доступные таблицы и создать свои.

![Final](./pics/finish.png)

[docker desktop]: https://www.docker.com/products/docker-desktop/
[wsl]: https://learn.microsoft.com/en-us/windows/wsl/install
