ssh -tt -o StrictHostKeyChecking=no root@142.32.45.2 <<'EOF'
DIR=test
echo ${DIR}
docker-compose --project-name ${DIR} up -d
EOF
Избавьтесь от \ $ - это мешает расширению вашей переменной.Но во втором обзоре я вижу, что это ваше намерение.Если вы хотите запретить расширение всех переменных до тех пор, пока ваш код не будет выполнен на удаленном хосте, попробуйте поместить слово heredoc в кавычки.Таким образом, $ передается в скрипт, который передается в ssh.
В качестве второго предложения (в соответствии с моим комментарием ниже) я хотел бы просто отправить параметризованный скрипт на удаленный хост и затем выполнить его (после изменения его разрешений).
# Make script
cat >compose.sh <<'EOF'
#!/bin/bash
DIR=$1
docker-compose --project-name $DIR
EOF
scp -o StrictHostKeyChecking=no compose.sh root@142.32.45.2:
ssh -o StrictHostKeyChecking=no root@142.32.45.2 chmod +x ./compose.sh \; ./compose.sh test