Я вам предложу вместо длинной портянки chain-вызовов — сделать несколько .sh-файлов.
И я думаю не стоит делать -p на posgresql/project порты, так как они не должны быть доступны снаружи (как минимум сделать ограничение на 127.0.0.1). У вас есть expose в project, всё, что осталось — использовать link при создании контейнера
А как же трудовой договор? Понятно, что много где это просто бумажка, где написано «сотрудник обязуется работать работу», но всё-таки хоть какие-то границы и обязанности должны быть определены.
И я думаю не стоит делать -p на posgresql/project порты, так как они не должны быть доступны снаружи (как минимум сделать ограничение на 127.0.0.1). У вас есть expose в project, всё, что осталось — использовать link при создании контейнера
docker-compose всё сделает за вас