こちらにDocker-ComposeでDjangoとPostgreSQLを動かす例があります。

この例ではdocker-compose.ymlでコマンドを定義していますが、サービス定義でbuildを指定している場合にはDockerfileのCMDでもコマンドを定義することができます。

docker-composeのcommand
DockerfileのCMD

docker-compose.yml

version: '2'
services:
  db:
    image: postgres
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

Dockerfile

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
# CMD <-ここでもコマンドを定義できる

このような場合にはdocker-compose.ymlのcommandとDockerfileのCMDのどちらで定義したほうがいいのでしょうか?
それぞれのメリット/デメリットがあれば教えてください。