feat:
--ADDED DOCKER API
This commit is contained in:
1 parent
c77806b367
commit
c3ca0689f0
3 files changed
+77
-10
No files matched your search
@@ -11,3 +11,16 @@ tail -f server.log
|
||||
ps aux | grep main.py
|
||||
|
||||
kill <PID>
|
||||
|
||||
MAKE A DEDICATED USER FOR ACCESSING DOCKER
|
||||
sudo useradd --system --shell /usr/sbin/nologin fastapi-docker
|
||||
|
||||
sudo usermod -aG docker fastapi-docker
|
||||
|
||||
sudo setfacl -m u:fastapi-docker:x /home/george
|
||||
sudo setfacl -m u:fastapi-docker:x /home/george/Desktop
|
||||
sudo setfacl -m u:fastapi-docker:x /home/george/Desktop/PROJECT26
|
||||
|
||||
RUN APP
|
||||
|
||||
(venv) george@george-Lenovo-ideapad-320-15IKB:~/Desktop/PROJECT26/pgMultiMasterCPUmemoryAgent$ sudo -u fastapi-docker /home/george/Desktop/PROJECT26/psqlDB/venv/bin/python3 /home/george/Desktop/PROJECT26/pgMultiMasterCPUmemoryAgent/main.py
|
||||
@@ -1,6 +1,8 @@
|
||||
import psutil
|
||||
import asyncio
|
||||
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
||||
from fastapi import FastAPI, WebSocket, WebSocketDisconnect,HTTPException
|
||||
import docker
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
|
||||
@@ -84,6 +86,49 @@ async def hardware_status_monitor(websocket: WebSocket):
|
||||
|
||||
print("Hardware monitoring WebSocket disconnected")
|
||||
|
||||
|
||||
# GET DOCKER CONTAINERS
|
||||
@app.get("/docker/containers")
|
||||
def get_containers():
|
||||
|
||||
try:
|
||||
# Connect to the Docker daemon running on this VM
|
||||
client = docker.from_env()
|
||||
|
||||
# all=True means:
|
||||
# running + stopped + exited containers
|
||||
containers = client.containers.list(all=True)
|
||||
|
||||
result = []
|
||||
|
||||
for container in containers:
|
||||
|
||||
result.append({
|
||||
"id": container.short_id,
|
||||
"name": container.name,
|
||||
"image": (
|
||||
container.image.tags[0]
|
||||
if container.image.tags
|
||||
else container.image.short_id
|
||||
),
|
||||
"status": container.status,
|
||||
"ports": container.attrs[
|
||||
"NetworkSettings"
|
||||
]["Ports"]
|
||||
})
|
||||
|
||||
return {
|
||||
"count": len(result),
|
||||
"containers": result
|
||||
}
|
||||
|
||||
except docker.errors.DockerException as e:
|
||||
|
||||
raise HTTPException(
|
||||
status_code=500,
|
||||
detail=f"Docker error: {str(e)}"
|
||||
)
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
import uvicorn
|
||||
|
||||
+18
-9
@@ -1,21 +1,30 @@
|
||||
alembic==1.19.2
|
||||
annotated-doc==0.0.5
|
||||
annotated-types==0.8.0
|
||||
anyio==4.15.1
|
||||
anyio==4.14.2
|
||||
certifi==2026.7.22
|
||||
charset-normalizer==3.5.2
|
||||
click==8.5.0
|
||||
exceptiongroup==1.3.1
|
||||
docker==7.2.0
|
||||
fastapi==0.141.1
|
||||
greenlet==3.5.5
|
||||
h11==0.16.0
|
||||
httptools==0.8.0
|
||||
idna==3.20
|
||||
idna==3.19
|
||||
Mako==1.4.1
|
||||
MarkupSafe==3.0.3
|
||||
psutil==7.2.2
|
||||
psycopg==3.3.4
|
||||
psycopg-binary==3.3.4
|
||||
psycopg2-binary==2.9.12
|
||||
pydantic==2.13.5
|
||||
pydantic_core==2.46.5
|
||||
PyJWT==2.13.0
|
||||
python-dotenv==1.2.3
|
||||
PyYAML==6.0.3
|
||||
requests==2.34.2
|
||||
SQLAlchemy==2.0.52
|
||||
starlette==1.6.0
|
||||
typing-inspection==0.4.4
|
||||
typing_extensions==4.16.0
|
||||
uvicorn==0.53.0
|
||||
uvloop==0.22.1
|
||||
watchfiles==1.3.0
|
||||
websockets==16.1.1
|
||||
urllib3==2.8.0
|
||||
uvicorn==0.52.4
|
||||
websockets==17.1
|
||||
Reference in new issue
Block a user