Fix #4848: Prevent seed script crash in non-interactive environments #4856
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.
Problem
Docker startup fails with
EOFErrorwhen the seed script prompts for user input in non-interactive environments (Docker/CI). Additionally, on Windows, shell scripts with CRLF line endings causebash\rerrors.Solution
This PR implements two fixes:
Interactive Input Detection: Added
sys.stdin.isatty()check inscripts/seed.pyto detect non-interactive environments and skip reseeding gracefully with a helpful message instead of crashing.Line Ending Enforcement: Created
.gitattributesto enforce LF line endings for all shell scripts, preventing Windows CRLF issues in Docker containers.Changes
sys.stdin.isatty()check to detect Docker/CI environments.gitattributesto enforce LF line endings for shell scriptsTesting
Tested on Windows with Docker Desktop:
bash\rerrorsReferences
Screenshots
Before fix: Container crashed with
/usr/bin/env: 'bash\r': No such file or directoryAfter fix: Container starts successfully and runs migrations