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
|
ps aux | grep main.py
|
||||||
|
|
||||||
kill <PID>
|
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 psutil
|
||||||
import asyncio
|
import asyncio
|
||||||
from fastapi import FastAPI, WebSocket, WebSocketDisconnect
|
from fastapi import FastAPI, WebSocket, WebSocketDisconnect,HTTPException
|
||||||
|
import docker
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
@@ -84,6 +86,49 @@ async def hardware_status_monitor(websocket: WebSocket):
|
|||||||
|
|
||||||
print("Hardware monitoring WebSocket disconnected")
|
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__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
import uvicorn
|
import uvicorn
|
||||||
|
|||||||
+18
-9
@@ -1,21 +1,30 @@
|
|||||||
|
alembic==1.19.2
|
||||||
annotated-doc==0.0.5
|
annotated-doc==0.0.5
|
||||||
annotated-types==0.8.0
|
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
|
click==8.5.0
|
||||||
exceptiongroup==1.3.1
|
docker==7.2.0
|
||||||
fastapi==0.141.1
|
fastapi==0.141.1
|
||||||
|
greenlet==3.5.5
|
||||||
h11==0.16.0
|
h11==0.16.0
|
||||||
httptools==0.8.0
|
idna==3.19
|
||||||
idna==3.20
|
Mako==1.4.1
|
||||||
|
MarkupSafe==3.0.3
|
||||||
psutil==7.2.2
|
psutil==7.2.2
|
||||||
|
psycopg==3.3.4
|
||||||
|
psycopg-binary==3.3.4
|
||||||
|
psycopg2-binary==2.9.12
|
||||||
pydantic==2.13.5
|
pydantic==2.13.5
|
||||||
pydantic_core==2.46.5
|
pydantic_core==2.46.5
|
||||||
|
PyJWT==2.13.0
|
||||||
python-dotenv==1.2.3
|
python-dotenv==1.2.3
|
||||||
PyYAML==6.0.3
|
requests==2.34.2
|
||||||
|
SQLAlchemy==2.0.52
|
||||||
starlette==1.6.0
|
starlette==1.6.0
|
||||||
typing-inspection==0.4.4
|
typing-inspection==0.4.4
|
||||||
typing_extensions==4.16.0
|
typing_extensions==4.16.0
|
||||||
uvicorn==0.53.0
|
urllib3==2.8.0
|
||||||
uvloop==0.22.1
|
uvicorn==0.52.4
|
||||||
watchfiles==1.3.0
|
websockets==17.1
|
||||||
websockets==16.1.1
|
|
||||||
Reference in new issue
Block a user