DAS_2024_1/pupkov_alexey_lab_1/README.md

5.3 KiB
Raw Blame History

Лабораторная работа №1 - Знакомство с docker и docker-compose

Цель: изучение современных технологий контейнеризации. Задачи:

  1. Установить средство контейнеризации docker.
  2. Изучить применение и принципы docker.
  3. Изучить утилиту docker-compose и структуру файла docker-compose.yml.
  4. Развернуть не менее 3х различных сервисов при помощи docker-compose.
  5. Оформить отчёт в формате Markdown и создать Pull Request в git-репозитории.

Разворачивание сервисов

Предлагается развернуть не менее 3х сервисов через docker-compose из списка ниже:

  1. mediawiki Движок вики.
  2. redmine Система учёта багов, т.е. баг-трекер.
  3. wordpress Популярная система управления контентом.
  4. drupal Ещё одна популярная система управления контентом.
  5. moodle Система для обучения, на которой построена https://lms.ulstu.ru.
  6. gitea Сервис для хранения репозиториев git, на котором работает этот репозиторий. Требования и docker-compose:
  • Несколько контейнеров.
  • Хотя бы один volume.
  • Хотя бы один порт, проброшенный на хост. При этом разворачивание системы должно пройти до конца. Например, должен быть создан администратор и система должна корректно функционировать. Это необходимо будет предоставить в отчёте, поэтому не забывайте делать скриншоты.

Выбранные сервисы:

  1. mediawiki
  2. wordpress
  3. gitea

image1.png

Объяснение кода:

  1. Сеть Создание сети:
    Определена сеть gitea для соединения контейнеров Gitea.
    external: false: Сеть создаётся автоматически и не является внешней.

  2. Сервисы MediaWiki
    Сервис mediawiki \ image: mediawiki: Используется официальный образ MediaWiki.
    restart: always: Контейнер будет автоматически перезапускаться при сбое.
    ports: - 1337:80: Перенаправление порта 80 контейнера на порт 1337 хоста.
    links: - mediawiki_database: Связь с контейнером mediawiki_database. \ volumes: - images:/var/www/html/images: Том для хранения загруженных изображений. \

  3. Сервис mediawiki_database
    image: mariadb: Образ MariaDB для базы данных.
    environment:
    MYSQL_DATABASE: my_wiki: Создание базы данных с именем my_wiki.
    MYSQL_USER: wikiuser: Создание пользователя wikiuser.
    MYSQL_PASSWORD: example: Пароль для пользователя. MYSQL_RANDOM_ROOT_PASSWORD: 'yes': Генерация случайного пароля для root.
    volumes: - mediawiki_db:/var/lib/mysql: Том для хранения данных базы.

  4. WordPress
    Сервис wp_db (база данных WordPress)
    image: mariadb:10.6.4-focal: Версия образа MariaDB.
    command: Задаёт плагин аутентификации.
    volumes: - wp_db_data:/var/lib/mysql: Том для хранения данных базы.
    environment:
    MYSQL_ROOT_PASSWORD=somewordpress: Пароль для root.
    MYSQL_DATABASE=wordpress, MYSQL_USER=wordpress, MYSQL_PASSWORD=wordpress: Параметры базы данных.
    expose: - 3306 - 33060: Доступность портов для связи между контейнерами. \

  5. Сервис wordpress
    image: wordpress:latest: Образ WordPress.
    volumes: - wp_data:/var/www/html: Том для данных сайта.
    ports: - 52384:80: Доступ к сайту через порт 52384.
    environment: Переменные для подключения к базе wp_db. \

  6. Gitea
    Сервис server
    image: gitea/gitea:1.22.3: Образ Gitea версии 1.22.3.
    container_name: gitea: Имя контейнера.
    environment: Параметры UID и GID пользователя.
    networks: - gitea: Подключение к сети gitea.
    volumes:
    gitea:/gitea:/data: Том для данных.
    /etc/timezone:/etc/timezone:ro, /etc/localtime:/etc/localtime:ro: Синхронизация времени.
    ports:
    3000:3000: Веб-доступ через порт 3000.
    222:22: SSH доступ через порт 222. \

  7. Тома
    Определены тома для хранения данных всех сервисов (images, mediawiki_db, wp_db_data, wp_data, gitea).

    Ссылка на демонстрацию работы программы