diff --git a/Practice_2024/.gitkeep b/Practice_2024/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Docker/.gitkeep b/Practice_2024/Docker/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Docker/IMG/.gitkeep b/Practice_2024/Docker/IMG/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Docker/IMG/img.png b/Practice_2024/Docker/IMG/img.png new file mode 100644 index 0000000000000000000000000000000000000000..dfca401a2c92d450c1b3f69b391a7117998f3da6 Binary files /dev/null and b/Practice_2024/Docker/IMG/img.png differ diff --git a/Practice_2024/Docker/IMG/img_1.png b/Practice_2024/Docker/IMG/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..eff41e0eff647866afa399eeccd4f6f595a69776 Binary files /dev/null and b/Practice_2024/Docker/IMG/img_1.png differ diff --git a/Practice_2024/Docker/IMG/img_2.png b/Practice_2024/Docker/IMG/img_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa67e03d9e25132d3bd9c530510973d916aad27 Binary files /dev/null and b/Practice_2024/Docker/IMG/img_2.png differ diff --git a/Practice_2024/Docker/IMG/img_3.png b/Practice_2024/Docker/IMG/img_3.png new file mode 100644 index 0000000000000000000000000000000000000000..101837104c3022a01914c2ffdc93295bb4afacf8 Binary files /dev/null and b/Practice_2024/Docker/IMG/img_3.png differ diff --git a/Practice_2024/Docker/IMG/img_4.png b/Practice_2024/Docker/IMG/img_4.png new file mode 100644 index 0000000000000000000000000000000000000000..70f9bb9b1dabe2f3174c69b8398b1c62df8e66a1 Binary files /dev/null and b/Practice_2024/Docker/IMG/img_4.png differ diff --git a/Practice_2024/Docker/IMG/img_5.png b/Practice_2024/Docker/IMG/img_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2095919acd4613916879e1dfb18179024b711883 Binary files /dev/null and b/Practice_2024/Docker/IMG/img_5.png differ diff --git a/Practice_2024/Docker/IMG/img_6.png b/Practice_2024/Docker/IMG/img_6.png new file mode 100644 index 0000000000000000000000000000000000000000..69c649f64a3b1dfad7a4b2dbc23ffe38b18b18df Binary files /dev/null and b/Practice_2024/Docker/IMG/img_6.png differ diff --git a/Practice_2024/Docker/README.md b/Practice_2024/Docker/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a2ab900af53d396cc92894f6dbbbb37f15ad5723 --- /dev/null +++ b/Practice_2024/Docker/README.md @@ -0,0 +1,165 @@ +# Postgres и pgAdmin. ЗапуÑк из контейнера + + + +[Docker](https://www.docker.com/) — программное обеÑпечение Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Ñ€Ð°Ð·Ð²Ñ‘Ñ€Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ñ Ð¸ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñми в Ñредах Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ контейнеризации, контейнеризатор приложений. ПозволÑет «упаковать» приложение Ñо вÑем его окружением и завиÑимоÑÑ‚Ñми в контейнер, который может быть развёрнут на любой Linux-ÑиÑтеме Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ контрольных групп в Ñдре, а также предоÑтавлÑет набор команд Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñтими контейнерами. + +Также Docker имеет пакетный менеджер [Docker Compose](https://docs.docker.com/compose/), позволÑющий опиÑывать и запуÑкать многоконтейнерные приложениÑ. Конфигурационные файлы Compose опиÑываютÑÑ Ð½Ð° Ñзыке YAML. + +## УÑтановка Docker и docker-compose + +Ð”Ð»Ñ ÑƒÑтановки Docker перейдите по [ÑÑылке](https://docs.docker.com/get-docker/), выберите Ñвою ÑиÑтему и Ñледуйте инÑтрукциÑм. + +Ð”Ð»Ñ ÑƒÑтановки docker-compose перейдите по [ÑÑылке](https://docs.docker.com/compose/install/), выберите Ñвою ÑиÑтему и Ñледуйте инÑтрукциÑм. + +Проверка уÑпешной уÑтановки Docker +```bash +docker run hello-world +``` + +Ð’ выводе будет ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ: +> Hello from Docker! +> +> This message shows that your installation appears to be working correctly. + +И ещё неÑколько информационных Ñтрок. + + + +Ðа некоторых ÑиÑтемах возникает проблема, Ñ Ð¿Ð¾ÑтоÑнным иÑпользованием `sudo` Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Docker, Ð´Ð»Ñ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð»Ð°Ð³Ð°ÑŽ иÑпользовать Ñледующий [гайд](https://github.com/sindresorhus/guides/blob/main/docker-without-sudo.md). +Важно не забыть перелогинитьÑÑ, как Ñказано в пункте 2 гайда. + +### Ðекоторые полезные команды: + +СпиÑок контейнеров: +```bash +docker ps +``` +СпиÑок контейнеров, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ Ð¾Ñтановленные: +```bash +docker ps -a +``` +СпиÑок образов: +```bash +docker image ls +``` +ОÑтановка контейнера: +```bash +docker stop <container id> +``` +Удаление оÑтановленного контейнера: +```bash +docker rm <container id> +``` +Удаление вÑех оÑтановленных контейнеров: +```bash +docker rm $(docker ps --filter status=exited -q) +``` +СпиÑок вÑех запущенных Ñетей: +```bash +docker network ls +``` +Удаление Ñети: +```bash +docker network rm <network id> +``` +Удаление вÑех неиÑпользуемых образов (иÑпользуйте аккуратно!): +```bash +docker image prune +``` + + +## ЗапуÑк контейнеров +Ð”Ð»Ñ Ð·Ð°Ð¿ÑƒÑка будем иÑпользовать [compose-файл](docker-compose.yml). + +Из директории, в которой находитÑÑ `docker-compose.yml` в терминал вводим команду: +```bash +docker-compose up -d +``` + +ОÑтановка контейнера: +```bash +docker-compose down +``` + +Ð”Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº БД можно иÑпользовать как минимум 3 различных варианта подключениÑ, ниже подробнее о таких ÑпоÑобах, Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ можно иÑпользовать любой наиболее подходÑщий вам по духу, будь то ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð°Ñ Ñтрока, веб-Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¸Ð»Ð¸ IDE. + +## Подключение к БД + +### Подключение к БД из pgAdmin + + * Ð’ контейнере `pgadmin` иÑпользуетÑÑ 2 переменные Ñреды Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°: Ð°Ð´Ñ€ÐµÑ Ñлектронной почты и пароль. + * Ð’ÐЖÐО: Ñти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑƒÑ‡Ð°ÑŽÑ‰Ð¸Ñ… примеров, и их никогда не Ñледует иÑпользовать в рабочей Ñреде. Измените их ÑоответÑтвующим образом, когда Ñто необходимо. + * pgAdmin — Ñто веб-приложение, и его порт по умолчанию — 80; мы ÑопоÑтавлÑем его Ñ 8080 на нашем локальном хоÑте, чтобы избежать возможных конфликтов. + +email: `admin@admin.com` \ +password: `root` + +Ðеобходимо открыть pgAdmin, Ð¿ÐµÑ€ÐµÐ¹Ð´Ñ Ð½Ð° `localhost:8080` в веб-браузере. ИÑпользуйте Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° тот же Ð°Ð´Ñ€ÐµÑ Ñлектронной почты и пароль, которые вы иÑпользовали Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка контейнера. + + + +Щелкните правой кнопкой мыши `Servers` на левой боковой панели и выберите `Create` > `Server`... + + + +Ð’ разделе `General` укажите Ð¸Ð¼Ñ Ñервера. + + + +Ð’ разделе `Connection` добавьте то же Ð¸Ð¼Ñ Ñ…Ð¾Ñта(контейнера), порт, БД, Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль, которые вы иÑпользовали при запуÑке контейнера. +ЕÑли ничего не изменÑлоÑÑŒ в compose-файле, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ Ñледующие: \ +Host name/address (Ð¸Ð¼Ñ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð°): `postgres_db` \ +Port: `5432` \ +Maintenance database: `pg_db` \ +User: `postgres` \ +Password: `postgres` + + + +Ðажмите Сохранить. + +Теперь у Ð½Ð°Ñ ÐµÑÑ‚ÑŒ полнофункциональный графичеÑкий менеджер SQL, который мы можем иÑпользовать Ð´Ð»Ñ Ð·Ð°Ð´Ð°Ñ‡ админиÑÑ‚Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных и Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов. + + + +### Подключение к БД из DataGrip или DBeaver + + * Ð’ контейнере `postgres_db` иÑпользуетÑÑ 4 переменные Ñреды Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº БД. + * Ð’ÐЖÐО: Ñти Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑƒÑ‡Ð°ÑŽÑ‰Ð¸Ñ… примеров, и их никогда не Ñледует иÑпользовать в рабочей Ñреде. Измените их ÑоответÑтвующим образом, когда Ñто необходимо. + +Ð”Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· IDE можно иÑпользовать: + +Host: `localhost` \ +Port: `5432` \ +Database: `pg_db` \ +User: `postgres` \ +Password: `postgres` + +### Подключение к БД из cli + +Ð”Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· cli необходимо войти в запущенный контейнер Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды: +```bash +docker exec -ti postgres_db psql -d pg_db -U postgres +``` + +`-ti` - Ð¸Ð¼Ñ ÐºÐ¾Ð½Ñ‚ÐµÐ¹Ð½ÐµÑ€Ð°. \ +`-U` - Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ. \ +`-d` - Ð¸Ð¼Ñ Ð‘Ð”. + +ПоÑле чего можем вводить SQL-запроÑÑ‹, например команда: +```postgresql +select version(); +``` +Вернёт информацию об иÑпользуемой верÑии PostgreSQL + +Ркоманда: +```postgresql +select * from pg_catalog.pg_tables; +``` +Отобразит ÑпиÑок вÑех таблиц, имеющихÑÑ Ð² БД. + +Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° иÑпользуйте команду: +```postgresql +exit; +``` \ No newline at end of file diff --git a/Practice_2024/Docker/docker-compose.yml b/Practice_2024/Docker/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..3fe0d93f2e42ee497cebaccc6a908dd7db73a108 --- /dev/null +++ b/Practice_2024/Docker/docker-compose.yml @@ -0,0 +1,33 @@ +version: "3.8" + +services: + db: + image: postgres:15-alpine + container_name: "postgres_db" + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + - POSTGRES_DB=pg_db + - POSTGRES_PORT=5432 + - PGDATA=/var/lib/postgresql/data/pgdata + volumes: + - postgres_data:/var/lib/postgresql/data/pgdata + ports: + - "5432:5432" + restart: always +# env_file: # Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ secrets правильнее иÑпользовать .env-файл +# - .env + pgadmin: + image: dpage/pgadmin4 + container_name: "pgadmin" + environment: + - PGADMIN_DEFAULT_EMAIL=admin@admin.com + - PGADMIN_DEFAULT_PASSWORD=root + volumes: + - data_pgadmin:/var/lib/pgadmin + ports: + - "8080:80" + +volumes: + postgres_data: + data_pgadmin: diff --git a/Practice_2024/Seminars/.gitkeep b/Practice_2024/Seminars/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_1/.gitkeep b/Practice_2024/Seminars/Seminar_1/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_10/.gitkeep b/Practice_2024/Seminars/Seminar_10/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_2/.gitkeep b/Practice_2024/Seminars/Seminar_2/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_3/.gitkeep b/Practice_2024/Seminars/Seminar_3/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_4/.gitkeep b/Practice_2024/Seminars/Seminar_4/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_5/.gitkeep b/Practice_2024/Seminars/Seminar_5/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_6/.gitkeep b/Practice_2024/Seminars/Seminar_6/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_7/.gitkeep b/Practice_2024/Seminars/Seminar_7/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_8/.gitkeep b/Practice_2024/Seminars/Seminar_8/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/Practice_2024/Seminars/Seminar_9/.gitkeep b/Practice_2024/Seminars/Seminar_9/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/homework/README.md b/homework/README.md index d2e295c819c1bd58623419990975132bc7e44984..6b4c5bb0096daf5a01c60e15d43b9dcf553d1252 100644 --- a/homework/README.md +++ b/homework/README.md @@ -11,12 +11,12 @@ | â„– ДЗ | Ð’ÐµÑ | Темы | Дедлайн | |:------:|:-----:|:----------------------------------------------:|:--------------------------:| -| 1 | `0.?` | ПроÑтые запроÑÑ‹ | ??-0?-2023 21:00 GMT+03:00 | -| 2 | `0.?` | Ðгрегации, группировки, ÑоединениÑ, подзапроÑÑ‹ | ??-0?-2023 21:00 GMT+03:00 | -| 3 | `0.?` | Оконные функции | ??-0?-2023 21:00 GMT+03:00 | -| 4 | `0.?` | CTE, Views | ??-0?-2023 21:00 GMT+03:00 | -| 5 | `0.?` | Functions, Stored Procedures, Triggers | ??-0?-2023 21:00 GMT+03:00 | +| 1 | `0.?` | ПроÑтые запроÑÑ‹ | 14-04-2024 21:00 GMT+03:00 | +| 2 | `0.?` | Ðгрегации, группировки, ÑоединениÑ, подзапроÑÑ‹ | 14-04-2024 21:00 GMT+03:00 | +| 3 | `0.?` | Оконные функции | 14-04-2024 21:00 GMT+03:00 | +| 4 | `0.?` | CTE, Views | 15-05-2024 21:00 GMT+03:00 | +| 5 | `0.?` | Functions, Stored Procedures, Triggers | 15-05-2024 21:00 GMT+03:00 | Указанные дедлайны ÑвлÑÑŽÑ‚ÑÑ **жеÑткими**. -P.S.: выполнÑÑ‚ÑŒ и отправлÑÑ‚ÑŒ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° проверку можно Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° публикации. \ No newline at end of file +P.S.: выполнÑÑ‚ÑŒ и отправлÑÑ‚ÑŒ Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° проверку можно Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° публикации.