![FastAPIで作成したAPIをRailwayでデプロイしたときにハマったことと解決策](https://direction-studio.jp/contents/wp-content/uploads/2024/01/Blog01-1.png)
目次
RailWayとは?
![](https://direction-studio.jp/contents/wp-content/uploads/2024/01/スクリーンショット-2024-01-16-20.36.26-1024x593.png)
アプリケーションのデプロイプラットフォームです。
FastAPIで作成したデプロイをするときに使用したのですが、エラーが出たので解決方法をメモしておきます。
Githubで連携するだけではうまくいかず、Railwayで使用できるpythonのバージョン指定が必要だったようです。
セッティングについて
最終的にURL以外は、ほぼ設定していません。
代わりにrailway.jsonを設定しています。
![](https://direction-studio.jp/contents/wp-content/uploads/2024/01/スクリーンショット-2024-01-16-20.39.15.png)
![](https://direction-studio.jp/contents/wp-content/uploads/2024/01/スクリーンショット-2024-01-16-20.39.31.png)
![](https://direction-studio.jp/contents/wp-content/uploads/2024/01/スクリーンショット-2024-01-16-20.40.08.png)
![](https://direction-studio.jp/contents/wp-content/uploads/2024/01/スクリーンショット-2024-01-16-20.40.19.png)
railway.json
railwayでデプロイ時に用いる設定値をまとめた設定ファイルです。
配置場所は、プロジェクトのroot直下です。
APIのメインソースはmain.pyに書いています。
![](https://direction-studio.jp/contents/wp-content/uploads/2024/01/スクリーンショット-2024-01-16-20.50.26.png)
railway.json の記載内容
{ "$schema": "https://railway.app/railway.schema.json", "build": { "builder": "NIXPACKS" }, "deploy": { "startCommand": "uvicorn main:app --host 0.0.0.0 --port $PORT", "restartPolicyType": "ON_FAILURE", "restartPolicyMaxRetries": 10 } }
$PORT が文字列として認識されるエラーが発生
pyproject.toml と .python-versionでpythonのバージョンを指定すると解決しました。
pyproject.toml
[tool.poetry.dependencies] python = "^3.10" fastapi = "^0.80.0" uvicorn = "^0.18.3" [tool.poetry.dev-dependencies] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"
.python-version
3.10.7