4 months ago
I'm deploying a FastAPI backend and consistently getting this error:
Error: Invalid value for '--port': '$PORT' is not a valid integer.
What I've tried:
1. Dockerfile with exec form CMD:
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
2. Dockerfile with shell form CMD:
CMD uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-8000}
3. Dockerfile with explicit sh -c:
CMD ["sh", "-c", "uvicorn app.main:app --host 0.0.0.0 --port ${PORT:-8000}"]
4. railway.toml configuration:
[build]
builder = "nixpacks"
[deploy]
startCommand = "uvicorn app.main:app --host 0.0.0.0 --port $PORT"
All attempts result in the same error. The build succeeds but the container fails to start.
Project structure:
backend/
├── Dockerfile
├── railway.toml
├── requirements.txt (fastapi, uvicorn)
└── app/
└── main.py
Is Railway using my Dockerfile or Nixpacks? How can I properly pass the PORT variable to uvicorn?
Deployment logs show:
- Build succeeds
- Container starts
- Immediately fails with PORT error
- Health check fails repeatedly
Any help appreciated!
1 Replies
4 months ago
Hey there! We've found the following might help you get unblocked faster:
If you find the answer from one of these, please let us know by solving the thread!
Status changed to Solved vishalj99 • 4 months ago