minhasapov_ruslan_lab_1 #23
64
minhasapov_ruslan_lab_1/README.md
Normal file
64
minhasapov_ruslan_lab_1/README.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
## Лабораторная работа №1: Знакомство с docker и docker-compose
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Цель:** изучение современных технологий контейнеризации.
|
||||||
|
|
||||||
|
**Задачи:**
|
||||||
|
|
||||||
|
1. Установить средство контейнеризации docker.
|
||||||
|
2. Изучить применение и принципы docker.
|
||||||
|
3. Изучить утилиту docker-compose и структуру файла docker-compose.yml.
|
||||||
|
4. Развернуть не менее 3х различных сервисов при помощи docker-compose.
|
||||||
|
5. Оформить отчёт в формате Markdown и создать Pull Request в git-репозитории.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Сервисы:**
|
||||||
|
|
||||||
|
* **Gitea:** Легковесная и самодостаточная система управления версиями кода с веб-интерфейсом.
|
||||||
|
* **Postgres:** Мощная система управления реляционными базами данных с открытым исходным кодом.
|
||||||
|
* **Redis:** Высокопроизводительное хранилище данных типа "ключ-значение", используемое для кэширования, сессий и других задач.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Инструкция по запуску:**
|
||||||
|
|
||||||
|
1. **Установка Docker:** Необходимо убедиться, установлен ли Docker на системе, в ином случае установить его.
|
||||||
|
2. **Навигация:** Перейти в директорию с файлом `docker-compose.yml`.
|
||||||
|
3. **Запуск:** Необходимо выполнить следующую команду в терминале:
|
||||||
|
```bash
|
||||||
|
docker-compose up --build --remove-orphans
|
||||||
|
```
|
||||||
|
Данная команда создаст и запустит все необходимые контейнеры, описанные в `docker-compose.yml`.
|
||||||
|
|
||||||
|
**Проверка:**
|
||||||
|
|
||||||
|
Для проверки успешного запуска нужно выполнить команду:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker ps -a
|
||||||
|
```
|
||||||
|
|
||||||
|
В случае успеха мы можем увидеть список запущенных контейнеров (gitea, postgres и redis):
|
||||||
|
```bash
|
||||||
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
|
6ea2e28126a8 gitea/gitea:1.22.2 "/usr/bin/entrypoint…" About a minute ago Up 9 seconds 0.0.0.0:3000->3000/tcp, 0.0.0.0:222->22/tcp minhasapov_ruslan_lab_1-gitea-1
|
||||||
|
2490f332bc90 postgres:14 "docker-entrypoint.s…" About a minute ago Up 9 seconds 0.0.0.0:5432->5432/tcp minhasapov_ruslan_lab_1-postgres-1
|
||||||
|
c5580d8fe1d7 redis:latest "docker-entrypoint.s…" About a minute ago Up 9 seconds 0.0.0.0:6379->6379/tcp minhasapov_ruslan_lab_1-redis-1
|
||||||
|
```
|
||||||
|
**Примечание:**
|
||||||
|
|
||||||
|
*Файл `docker-compose.yml` содержит подробную информацию о конфигурации каждого сервиса, включая порты, тома и переменные окружения.*
|
||||||
|
|
||||||
|
**Важно:**
|
||||||
|
|
||||||
|
После первого запуска **Gitea**, необходимо зайти на сервис *(по адресу `http://localhost:3000`)*, выполнить первоначальную настройку и создать суперпользователя.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Видеодемонстрация работы:**
|
||||||
|
|
||||||
|
Видео доступно по <u>*[ссылке](https://disk.yandex.ru/i/6Efipp3Gxs9-Jw)*</u>
|
||||||
|
|
||||||
|
---
|
45
minhasapov_ruslan_lab_1/docker-compose.yml
Normal file
45
minhasapov_ruslan_lab_1/docker-compose.yml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
services: # начало объявления сервисов, которые будут запущены
|
||||||
|
postgres: # указываем название сервиса
|
||||||
|
image: postgres:14 # указываем название и/или версии образа Docker для Postgres
|
||||||
|
restart: always # автоматический перезапуск контейнера, если он упал
|
||||||
|
ports:
|
||||||
|
- "5432:5432" # пробрасываем порт 5432 из контейнера на хост-машину
|
||||||
|
# (слева порт хостовой машины, справа порт контейнера)
|
||||||
|
volumes: # указываются монтированные тома, папки, файлы
|
||||||
|
- postgres_data:/var/lib/postgresql/data # монтирует том postgres_data к /var/lib/postgresql/data,
|
||||||
|
# чтобы данные Postgres сохранялись после перезапуска контейнера
|
||||||
|
environment: # задаем переменные окружения для Postgres, такие как:
|
||||||
|
POSTGRES_USER: postgres_user # имя пользователя
|
||||||
|
POSTGRES_PASSWORD: postgres_password # пароль пользователя
|
||||||
|
POSTGRES_DB: postgres_db # имя БД
|
||||||
|
|
||||||
|
gitea:
|
||||||
|
image: gitea/gitea:1.22.2
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "3000:3000" # пробрасывает порты 3000 (HTTP, веб-интерфейс)
|
||||||
|
- "222:22" # и 22 (SSH) из контейнера на хост-машину
|
||||||
|
volumes:
|
||||||
|
- gitea_data:/data
|
||||||
|
environment:
|
||||||
|
GITEA__database__DB_TYPE: postgres
|
||||||
|
GITEA__database__HOST: postgres:5432 # хост бд, название сервиса выступает в роли доменного имени и внутри сети разрешается в ip нужного контейнера
|
||||||
|
GITEA__database__NAME: postgres_db
|
||||||
|
GITEA__database__USER: postgres_user
|
||||||
|
GITEA__database__PASSWD: postgres_password
|
||||||
|
depends_on: # указывается зависимость запуска контейнера от другого сервиса
|
||||||
|
- postgres # Gitea зависит от Postgres, поэтому Postgres будет запущен первым
|
||||||
|
- redis
|
||||||
|
|
||||||
|
redis:
|
||||||
|
image: redis:latest
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- "6379:6379"
|
||||||
|
volumes:
|
||||||
|
- redis_data:/data
|
||||||
|
|
||||||
|
volumes: # определяем тома, которые будут использоваться сервисами
|
||||||
|
postgres_data:
|
||||||
|
gitea_data:
|
||||||
|
redis_data:
|
Loading…
Reference in New Issue
Block a user