====== 2025-07-23 - docker and EOL fuss ======
today i was struggling to understand what was going on with my ~simple application, that was printing some JSONs on the screen. seemingly all good when testing, when i ran it in an actual environment, it turned out that there's something off with new lines formatting. after quite some digging i realized the problem was due to me calling it via ''docker''. to simplify it a bit, let's say all it did was ''echo x'' on the screen, i.e.:
$ echo x | hexdump -C
00000000 78 0a |x.|
00000002
but then:
$ docker run -it --rm debian:12 echo x | hexdump -C
00000000 78 0d 0a |x..|
00000003
who ordered the ''\r\n'' instead of ''\n''?!
to make it harder to spot, it all worked fine when printing on the screen -- it was only causing issues when pipe-ing, e.g. ''docker ... echo x | grep ...'', as EOLs were not interpreted correctly there...
after more digging it turned out, that the problem was ''-t'' flag (i.e. enable terminal). after removing it:
$ docker run -i --rm debian:12 echo x | hexdump -C
00000000 78 0a |x.|
00000002
my problem went away.
up until now i always added ''-t'' every time i needed interactive input (''-i''). today i learned that it's more nuanced...