Без версии в файле compose по умолчанию docker-compose будет использовать синтаксис версии 1, который определяет службы на верхнем уровне. В результате создается служба с именем «services» с параметрами «db» и «app», ни одна из которых не действительна в синтаксисе файла составления v1. В качестве первой строки укажите:
version: '2'
Я не использую синтаксис версии 3, потому что вы используете сборку в вашем файле compose, которая не работает в режиме роя. Ссылки также устарели, и вам следует переключиться на использование сетей Docker (предоставляется по умолчанию в версии 2 и выше файла compose). Полученный файл будет выглядеть так:
version: '2'
services:
db:
container_name: djangy-db
image: postgres
app:
container_name: djangy-app
build:
context: ./
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./app:/app
ports:
- "8000:8000"