Fix Docker build failure, add docker compose file for convenience #1132
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.



Description
This PR fixes a critical bug that prevents the Docker image from building. The build fails when
COPY . .runs without a WORKDIR, causing subsequent RUN commands to fail:Changes Made
WORKDIR /appdirective beforeCOPY . .in Dockerfiledocker-compose.ymlfor improved development workflow - this simplifies volume mounting, environment variables, and container management with just a single command likedocker-compose run pythainlpinstead of lengthydocker runcommandsThe Issue
The repository contains a
bindirectory. WhenCOPY . .executes without a WORKDIR, it copies all repository contents to the container's root (/). This causes the system's/bin/shto become inaccessible to subsequent RUN commands, though the exact mechanism is not clear (overwriting?).Setting WORKDIR before COPY ensures repository contents are isolated in
/app, preventing any interference with system directories.Testing
docker run -it pythainlp python -c "from pythainlp.tokenize import word_tokenize; print(word_tokenize('สวัสดีครับ'))"docker-compose run pythainlp pythonAdditional Notes
During testing, I discovered the CLI interface (
thainlpcommand) produces no output in Docker containers, though the Python API works correctly. I've reported this separately in issue #1131