services:
  postgres:
    image: postgres:latest # название и версия образа docker
    container_name: postgres # название контейнера
    environment: # блок переменных окружения, которые будут использованы для запуска и настройки
      POSTGRES_USERNAME: postgres # имя пользователя супер-пользователя СУБД
      POSTGRES_PASSWORD: postgres-admin # имя пользователя супер-пользователя СУБД
      PGDATA: "/var/lib/postgresql/data/pgdata" # путь к директории, где Postgres будет хранить свои данные.
    ports:
      - "5432:5432" # пробрасываем стандартный порт для доступа к postgres
    volumes:
      - ./postgres_data:/var/lib/postgresql/data/ # монтируем локальную директорию в директорию внутри контейнера с данными базы данных
      - ./init-database.sh:/docker-entrypoint-initdb.d/init-database.sh # Монтирует скрипт инициализации базы данных в специальную директорию внутри контейнера.
  redmine:
    image: redmine
    container_name: redmine
    ports:
      - "8080:3000"
    environment:
      REDMINE_DB_POSTGRES: postgres # хост, на котором расположена база данных Postgres
      REDMINE_DB_USERNAME: redmine # имя пользователя для подключения к базе данных Redmine
      REDMINE_DB_DATABASE: redminedb # база данных, к которой будет подключаться Redmine
      REDMINE_DB_PASSWORD: redmine-password # пароль, который будет использоваться для подключения
    depends_on: # обозначаем зависимость запуска сервиса redmine от запуска сервиса postgres
      - postgres
  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:3-management
    environment:
      RABBITMQ_DEFAULT_USER: rabbit # переопределяем значения имя для пользователя, который создается по умолчанию
      RABBITMQ_DEFAULT_PASS: rabbit-password # переопределяем значения пароля для пользователя, который создается по умолчанию
    ports:
      - "15672:15672" # порт для доступа к веб-интерфейсу
      - "5672:5672" # порт для доступа через протокол AMQP к брокеру сообщений