Jen doplněk při použití docker-compose , můžete také zkusit:
 command: bash -c "script_or_command > /path/to/log/command.log 2>&1" 
 Když zadáte seznam JSON jako CMD v Dockerfile , nebude spuštěn v shellu, takže obvyklé funkce shellu, jako je přesměrování stdout a stderr, nebudou fungovat.
Z dokumentace:
Formulář exec je analyzován jako pole JSON, což znamená, že musíte použít dvojité uvozovky (
") kolem slov nikoli v jednoduchých uvozovkách (').Na rozdíl od shellového formuláře, exec formulář nevyvolá příkazový shell. To znamená, že normální zpracování shellu neproběhne. Například
CMD [ "echo", "$HOME" ]neprovede substituci proměnných na$HOME. Pokud chcete zpracování shellu, použijte buď formulář shellu, nebo spusťte shell přímo, například:CMD [ "sh", "-c", "echo", "$HOME" ].
 Váš příkaz ve skutečnosti provede spuštění vašeho index.py skript a předání řetězců "1>server.log" a "2>server.log" jako argumenty příkazového řádku do tohoto python skriptu .
Místo toho použijte jeden z následujících (obě by měly fungovat):
- CMD "python index.py > server.log 2>&1"
- CMD ["/bin/sh", "-c", "python index.py > server.log 2>&1"]
 Chcete-li použít docker run v potrubí shellu nebo pod přesměrováním shellu, takže run přijměte stdin a odpovídajícím způsobem vystupte do stdout a stderr, použijte toto zaklínadlo:
docker run -i --log-driver=none -a stdin -a stdout -a stderr ...
 např. ke spuštění alpine image a spusťte UNIXový příkaz cat v uzavřeném prostředí:
echo "This was piped into docker" |
  docker run -i --log-driver=none -a stdin -a stdout -a stderr \
    alpine cat - |
  xargs echo This is coming out of docker: 
vydává:
This is coming out of docker: This was piped into docker