Add fastapi to the list of compose projects
* Fastapi base Dockerfile * requirements.txt for fastapi project * Add documentation on how to run the application * Add entrypoint for fastapi application * Add docker-compose.yml for fastapi Signed-off-by: vjanz <valon.januzaj98@gmail.com>
This commit is contained in:
parent
263ba37b97
commit
b7685ad15f
11
fastapi/Dockerfile
Normal file
11
fastapi/Dockerfile
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9-slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
RUN apt update
|
||||||
|
|
||||||
|
COPY requirements.txt ./
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY ./app ./app
|
||||||
|
|
55
fastapi/README.md
Normal file
55
fastapi/README.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
## Compose sample application
|
||||||
|
### Python/FastAPI application
|
||||||
|
|
||||||
|
Project structure:
|
||||||
|
```
|
||||||
|
├── docker-compose.yaml
|
||||||
|
├── Dockerfile
|
||||||
|
├── requirements.txt
|
||||||
|
├── app
|
||||||
|
├── main.py
|
||||||
|
├── __init__.py
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
[_docker-compose.yaml_](docker-compose.yaml)
|
||||||
|
```
|
||||||
|
services:
|
||||||
|
api:
|
||||||
|
build: .
|
||||||
|
container_name: fastapi-application
|
||||||
|
environment:
|
||||||
|
PORT: 8000
|
||||||
|
ports:
|
||||||
|
- '8000:8000'
|
||||||
|
restart: "no"
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
## Deploy with docker-compose
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker-compose up -d --build
|
||||||
|
```
|
||||||
|
## Expected result
|
||||||
|
|
||||||
|
Listing containers must show one container running and the port mapping as below:
|
||||||
|
```
|
||||||
|
$ docker ps
|
||||||
|
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||||
|
7087a6e79610 5c1778a60cf8 "/start.sh" About a minute ago Up About a minute 80/tcp, 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp fastapi-application
|
||||||
|
```
|
||||||
|
|
||||||
|
After the application starts, navigate to `http://localhost:8000` in your web browser and you should see the following json response:
|
||||||
|
```
|
||||||
|
{
|
||||||
|
"message": "OK"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Stop and remove the containers
|
||||||
|
```
|
||||||
|
$ docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
|
0
fastapi/app/__init__.py
Normal file
0
fastapi/app/__init__.py
Normal file
8
fastapi/app/main.py
Normal file
8
fastapi/app/main.py
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
from fastapi import FastAPI
|
||||||
|
|
||||||
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
@app.get("/")
|
||||||
|
def hello_world():
|
||||||
|
return {"message": "OK"}
|
10
fastapi/docker-compose.yml
Normal file
10
fastapi/docker-compose.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
services:
|
||||||
|
api:
|
||||||
|
build: .
|
||||||
|
container_name: fastapi-application
|
||||||
|
environment:
|
||||||
|
PORT: 8000
|
||||||
|
ports:
|
||||||
|
- '8000:8000'
|
||||||
|
restart: "no"
|
||||||
|
|
2
fastapi/requirements.txt
Normal file
2
fastapi/requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
fastapi
|
||||||
|
uvicorn
|
Loading…
Reference in New Issue
Block a user