services:
    db:                                                 # База данных
      image: postgres:${POSTGRES_TAG}                   # Берём тег образа из переменной среды
      restart: always                                   # Автоматический перезапуск контейнера, если он упал
      ports:                                            # проброс портов
        - 5432:5432                                     # Так как на хосте нет postgres, порт по умолчанию можно использовать свободно
      volumes:                                          # Указываем проброс папок
        - ${POSTGRES_DATA_DIR}:/var/lib/postgresql/data # Данные postgres хранятся в /var/lib/postgresql/data.
                                                        # А на хосте монтируем туда, куда указано в переменной
      environment:                                      # Указываем переменные среды
        POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}         # Пароль от учётки postgres берём из переменных среды

    db_web_gui:                           # Интерфейс для доступа к БД (на компе нет PgAdmin)
      image: ${DB_GUI_IMAGE}              # Их есть много разных, так что имя образа из env
      restart: always         
      ports:            
        - 8080:${DB_GUI_CONTEINER_PORT}   # Так как Web GUI разные, то и порт может быть разный. Берём из env 

    rabbit:                                       # Rabbit тоже понадобится в будущем
      image: rabbitmq:${RABBIT_TAG}               # Определяем тегом версию
      restart: always     
      ports:  
        - 5672:5672                               # Это порт доступа к брокеру (если буду разрабатывать на локале)
        - 8081:15672                              # А это порт для Web GUI. Для удобста на хосте это 8081, близко к БД
      volumes:
        - ${RABBIT_DATA_DIR}:/var/lib/rabbitmq    # У Rabbit так же можно пробросить папку, чтобы не терять данные
      environment:
        RABBITMQ_DEFAULT_USER: ${RABBIT_USERNAME} # Логин для пользователя Rabbit Берём из env
        RABBITMQ_DEFAULT_PASS: ${RABBIT_PASSWORD} # Пароль для пользователя Rabbit. Берём из env

    