The changes to Makefile are totally not portable. Not sure why a 28K binary needs to be stripped to 20K with non-portable flags; it's not like busybox users will ever use this...
Also, `dprintf` (which is most likely already declared in `stdio.h`) should not be made static. For some reason (inlining?) gcc does not error out when optimization is on. You can see the error by dropping the `-O3` flag:
```
$ make
cc -march=native -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -Wl,--gc-sections -c -o nnn.o nnn.c
nnn.c:123:1: error: static declaration of ‘dprintf’ follows non-static declaration
dprintf(int fd, const char *fmt, ...)
^
In file included from /usr/include/curses.h:171:0,
from nnn.c:6:
/usr/include/stdio.h:415:12: note: previous declaration of ‘dprintf’ was here
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
^
<builtin>: recipe for target 'nnn.o' failed
make: *** [nnn.o] Error 1
```
clang spots the error regardless of optimizations.
I won't judge you for wanting to run a single Python script with Docker (though I find it amusing), but this doesn't belong to the repo. I mean, just look around, I've yet to see a comparable project to include a Dockerfile. It's also rather trivial for anyone who knows Docker to put one together.