TIL that python STDOUT is buffered by default (at least for python3). You can get docker logs output by passing the -u flag. I added this to my shebang, so I only have to do ./main.py to run my script.