|
@@ -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
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+
|