https://github.com/viktorsvertoka/goit-cs-hw-02
Home task for Computer Systems and Their Fundamentals course💾
https://github.com/viktorsvertoka/goit-cs-hw-02
bash curl docker goit goit-cs-hw-02 postgresql
Last synced: 9 days ago
JSON representation
Home task for Computer Systems and Their Fundamentals course💾
- Host: GitHub
- URL: https://github.com/viktorsvertoka/goit-cs-hw-02
- Owner: ViktorSvertoka
- Created: 2023-09-24T21:32:44.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-11-18T22:04:48.000Z (7 months ago)
- Last Synced: 2025-04-09T03:37:11.935Z (3 months ago)
- Topics: bash, curl, docker, goit, goit-cs-hw-02, postgresql
- Language: Python
- Homepage:
- Size: 3.03 MB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Домашнє завдання до модуля “Основи операційних систем”
Готові до тренування? 🤩
Сьогоднішнє домашнє завдання складається з двох незалежних завдань і спрямоване на використання командного рядка Bash для автоматизації процесів та поглиблення розуміння Docker і контейнеризації.
У цьому домашньому завданні ви попрактикуєтесь:
- взаємодіяти з операційною системою через командний рядок, а саме навчитесь створювати bash-скрипти та використовувати команду `curl` — потужний інструмент командного рядка для взаємодії з вебсерверами, зокрема для виконання HTTP-запитів;
- налаштовувати та використовувати Docker Compose для керування середовищем, що містить не тільки застосунок, але й базу даних PostgreSQL.Ви отримаєте практичні навички, які можна використовувати в реальних сценаріях роботи з операційними системами та мережами, практичний досвід роботи контейнеризації FastAPI застосунку разом з його базою даних PostgreSQL.
Нумо починати?! 💪🏼
### Підготовка та завантаження домашнього завдання
1. Створіть публічний репозиторій goit-cs-hw-02.
2. Виконайте завдання та відправте його у свій репозиторій.
3. Завантажте робочі файли на свій комп’ютер та прикріпіть їх в LMS у форматі zip. Назва архіву повинна бути у форматі ДЗ2_ПІБ.
4. Прикріпіть посилання на репозиторій goit-cs-hw-02 та відправте на перевірку.
#### Формат оцінювання
- Залік/незалік
#### Формат здачі
- Прикріплені файли репозиторію у форматі `zip` з назвою `ДЗ2_ПІБ`.
- Посилання на репозиторій.> [!IMPORTANT]
>
> 💡 ВАЖЛИВО Перегляньте Інструкцію щодо завантаження робочого файлу з репозиторію на `Github`## Технічний опис завдань
### Завдання 1
Напишіть скрипт, який автоматично перевіряє, чи доступні певні вебсайти. Скрипт повинен використовувати команду curl для надсилання HTTP GET запитів до кожного сайту у списку та перевірки відповіді.
#### Покрокова інструкція
1. Список вебсайтів. У вашому скрипті має бути визначений масив з URL вебсайтів, які потрібно перевірити. Наприклад, `https://google.com,` `https://facebook.com`, `https://twitter.com`.
2. Перевірка доступності. Скрипт має перевіряти кожен сайт зі списку за допомогою `curl`, переконуючись, що сайт відповідає з HTTP статус-кодом 200, що вказує на успішну доступність сайту.
3. Запис результатів у файл. Для кожного сайту результат перевірки (доступний чи недоступний) має бути записаний у файл логів. Назва файлу логів має бути визначена у скрипті.
4. Форматування виходу. Результати мають бути чітко сформульовані, наприклад: `"[](https://google.com/) is UP"` або `"[](https://twitter.com/) is DOWN"`.
5. Вивід інформації. Після виконання скрипту має бути виведено повідомлення, що результати записано у файл логів із його назвою.
#### Приклад виконання скрипту
Скрипт виконує команди та виводить результати у файл `website_status.log`. Записи у файлі логів будуть відображати статус кожного сайту (UP або DOWN) на момент запуску скрипту.
```bash
is UP
is UP
is UP
```#### Критерії прийняття
- Скрипт написано на Bash.
- Скрипт повинен опрацьовувати переадресацію.
- Використано цикл для обходу всіх сайтів у списку.
- Використано команду `curl` для перевірки HTTP-відповідей.
- Результати перевірки записані у файл логів, виведено про це повідомлення.
- Форматування коду чітке та акуратне.> [!TIP]
>
> Критерії прийняття домашнього завдання є обов’язковою умовою розгляду домашнього завдання ментором. Якщо якийсь з критеріїв не виконано, ДЗ відправляється ментором на доопрацювання без оцінювання.
> Якщо вам “тільки уточнити”😉 або ви “застопорилися” на якомусь з етапів виконання— звертайтеся до ментора у Slack### Завдання 2
Клонуйте FastAPI застосунок, налаштуйте і запустіть його в Docker контейнері. Перевірте правильність роботи застосунку та підключення до бази даних.
#### Покрокова інструкція
1. Використовуючи команду `git clone`, клонуйте репозиторій за адресою `https://github.com/GoIT-Python-Web/Computer-Systems-hw02`. Перейдіть у клонований каталог.
2. Створіть `Dockerfile` із вказівками для створення образу Docker застосунку.
3. Напишіть `docker-compose.yaml` з конфігурацією для застосунку та PostgreSQL.
4. Використайте Docker Compose для побудови середовища, команду `docker-compose up` для запуску середовища.
> [!NOTE]
>
> 💡 Підказка:
> Внесіть зміни в рядку підключення до бази даних SQLALCHEMY_DATABASE_URL: вона знаходиться у файлі \\conf\\db.py. Замість localhost вставте ім'я сервісу PostgreSQL з вашого файлу docker-compose.yaml .```bash
SQLALCHEMY_DATABASE_URL = f"postgresql+psycopg2://postgres:567234@localhost:5432/hw02"
```Коли ви використовуєте Docker Compose, кожен сервіс (контейнер) має власну мережу, і вони зазвичай не можуть звертатися один до одного за допомогою `localhost`. Замість цього, ви маєте використовувати назву сервісу в якості імені хоста.
5. Перевірте функціональність застосунку та доступність бази даних.
> [!NOTE]
>
> 💡 Підказка:
>
> Після запуску контейнера із застосунком вигляд у браузері повинен бути наступним:
Якщо все правильно налаштовано у файлі `docker-compose.yaml`, натиснувши кнопку Перевірити БД, ви повинні побачити наступне:

Якщо замість `"Welcome to FastAPI!”` ви бачите червоне віконце з повідомленням про помилку, значить ви неправильно налаштували `docker-compose.yaml`
#### Критерії прийняття
- Клоновано репозиторій, створено `Dockerfile` для створення образу `Docker`застосунку.
- Написано `docker-compose.yaml` з конфігурацією для застосунку та `PostgreSQL`.
- Використано `Docker Compose`, команду `docker-compose up` для побудови та запуску середовища.
- Застосунок є функціональним, а база даних — доступною, що підтверджується натисканням кнопки `Перевірити БД`.
### Результат виконаного завдання № 1

### Результат виконаного завдання № 2
