Skip to content

Revise Dockerfile for use in Kubernetes or provide additional configuration documentation #81

Open
@devraj

Description

@devraj

Is your feature request related to a problem? Please describe.
When trying to use the template for a project that would run in Kubernetes, there were many things that didn't work.

  • The Dockerfile for production does not provide a CMD which is expected for the container to run, either provide this or provide documentation for creating the helm chart to provide the command to run. Ideally we could do both, where if a command is not provided it runs the fastapi app and otherwise runs taskiq workers etc.
  • To make the template generic we have used the variable PROJ_NAME wherever possible, this has worked while we have used docker compose to run production workloads where it can find the environment variable but not much when it's running in a Kubernetes managed environment. This is particularly an issue with the Dockerfile itself where it references PROJ_NAME in the uvicorn command
  • Should we use gunicorn at all? Follow this discussion on FastAPI discussion.

The Dockerfile has a section where we run as the project User this results in:

INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
ERROR:    [Errno 13] error while attempting to bind on address ('0.0.0.0', 80): permission denied
INFO:     Waiting for application shutdown.
INFO:     Application shutdown complete.

See bind() to 0.0.0.0:80 failed(13: Permission denied where they suggest to run the command as root

Describe the solution you'd like
Either provide a programmatic solution to the above or extended documentation that allows developers to quickly use this template in production in Kubernetes.

Describe alternatives you've considered
NA

Additional context
All relevant to the Kubernetes deployment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions