In your Dockerfile, try adding instead:
RUN python -m nltk.downloader punkt
This will run the command and install the requested files to //nltk_data/
The problem is most likely related to using CMD vs. RUN in the Dockerfile. Documentation for CMD:
The main purpose of a CMD is to provide defaults for an executing container.
which is used during docker run <image>, not during build. So other CMD lines probably were overwritten by the last CMD python app.py line.