FASTAPI Docker Notes
$ cd directory where Dockerfile is placed:
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7
COPY ./app /app
$ docker build -t myfastapi .
$ docker run --rm -d --name mycontainer -p 80:80 myfastapi
if error:
docker: Error response from daemon: Conflict. The container name "/mycontainer" is already in use by container
$ docker container list CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7df489a9f136 myfastapi "/start.sh" 12 minutes ago Up 12 minutes 0.0.0.0:80->80/tcp mycontainer
$ docker stop $ docker stop 7df489a9f136
or
$ docker system prune
and try again
$ docker run --rm -d --name mycontainer -p 80:80 myfastapi
with Live Docker reload, so no need to
docker build docker run
like so:
$ docker run --rm -d --name mycontainer -p 80:80 -v $(pwd):/app myfastapi /start-reload.sh
MODULE_NAME: docker run -d -p 80:80 -e MODULE_NAME="custom_app.custom_main" myimage
VARIABLE_NAME: $ docker run -d -p 80:80 -e VARIABLE_NAME="api" myimage, e.g -> $ docker run --rm -d -e VARIABLE_NAME="api" --name mycontainer -p 80:80 -v $(pwd):/app myfastapi /start-reload.sh
Combining MODULE_NAME and VARIABLE_NAME into APP_MODULE: $ docker run --rm -d -e APP_MODULE="app.custom_app.custom_main:api" --name mycontainer -p 80:80 -v $(pwd):/app myfastapi /start-reload.sh
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7df489a9f136 myfastapi "/start.sh" 17 seconds ago Up 15 seconds 0.0.0.0:80->80/tcp mycontainer
Chrome
localhost/homepage <-- from Docker
localhost:8000/homepage <-- from local machine
{"Hello":"from home page"}