Как использовать нескольких блокирующих команд в docker-compose?
docker-compose не знапускает команды
он инструмент запуска докер-контейнеров. 
ваша задача - научится упаковывать свои приложения в контейнер (в данном случае три разных контейнера) , а после уже написать сценарий запуска этих трех контейнеров + постгрес + редис и что там еще надо..

вот отличный мануал на офф сайте докер как заворачивать приложение на питоне в контейнер
https://docs.docker.com/language/python/build-images/
Надо написать скрипт, который будет играть роль ENTRYPOINT. Такой скрипт может обладать очень богатым функционалом, но для решения задачи хватит: docker-entrypoint.sh#!/bin/sh
set -e

if [ "x$DJANGO_MANAGEPY_MIGRATE" = 'xenable' ]; then
    python manage.py migrate --noinput
fi

if [ "x$DJANGO_MANAGEPY_COLLECTSTATIC" = 'xenable' ]; then
    python manage.py collectstatic --noinput
fi

if [ "x$DJANGO_MANAGEPY_LOADDATA" = 'xenable' ]; then
    python manage.py loaddata fixtures/initial_data.json
fi

if [ "x$DJANGO_MANAGEPY_PARALLELRUN" = 'xenable' ]; then
    python manage.py rqworker &
    python manage.py rqscheduler &
    python manage.py runserver &
fi

exec "$@"
Написать Dockerfile на базе которого будет запускаться контейнер и добавить в него ENTRYPOINT ["./docker-entrypoint.sh"]

Среди прочего в Dockerfile следует добавить инструкции по установке gunicorn и прочих зависимостей.

Запускать всё это можно из docker-compose.ymlversion: "3.9"
   
services:
  db:
    container_name: mysql
    image: mysql:8.0.22
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - /data:/var/lib/mysql
    restart: always
    networks:
      - net

  django:
    container_name: django
    build:
        context: .
        args:
          USER_ID: ${USER_ID}
          GROUP_ID: ${GROUP_ID}
          USER_NAME: ${USER_NAME}
          GROUP_NAME: ${GROUP_NAME}
          DOMAIN_NAME: ${DOMAIN_NAME}
          RUN_DEPS: ${RUN_DEPS}
          BUILD_DEPS: ${BUILD_DEPS} 
    environment:
      DJANGO_MANAGEPY_MIGRATE: ${DJANGO_MANAGEPY_MIGRATE}
      DJANGO_MANAGEPY_COLLECTSTATIC: ${DJANGO_MANAGEPY_COLLECTSTATIC}
      DJANGO_MANAGEPY_COLLECTSTATIC: ${DJANGO_MANAGEPY_COLLECTSTATIC}
      DJANGO_MANAGEPY_LOADDATA: ${DJANGO_MANAGEPY_LOADDATA}
      DJANGO_MANAGEPY_PARALLELRUN: ${DJANGO_MANAGEPY_PARALLELRUN}
    command: gunicorn ${WSGI}.wsgi:application --user ${USER_NAME} --group ${GROUP_NAME} --name ${APP_NAME} --workers ${WORKERS} --max-requests ${MAX_REQ} --timeout ${TIMEOUT} --preload --bind=unix:/var/www/${USER_NAME}/data/tmp/${APP_NAME}.sock
    volumes:
      - /blabla:/blabla
    depends_on:
      - db
    restart: always
    networks:
      - net

networks:
  net:
    name: net
В command вписать команду запуска gunicorn, сначала отработает скрипт docker-entrypoint.sh, затем запуститься gunicorn.

Прочие сервисы добавляются в docker-compose.yml аналогично тому, как я описал добавление MySQL.