Add initial setup scripts and configuration files for development environment
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
import os
|
||||
import uuid
|
||||
import shutil
|
||||
import json
|
||||
import subprocess
|
||||
import hashlib
|
||||
from datetime import datetime
|
||||
|
||||
# Archivo JSON para guardar los datos de los contenedores
|
||||
CONTAINER_DATA_FILE = 'containers.json'
|
||||
# Nombre y etiqueta para la imagen base
|
||||
BASE_IMAGE_TAG = 'alpine_vscode:latest'
|
||||
|
||||
|
||||
# -------------------------------
|
||||
# Función: Eliminar todos los contenedores listados en el JSON
|
||||
# -------------------------------
|
||||
def delete_all_containers():
|
||||
if not os.path.exists(CONTAINER_DATA_FILE):
|
||||
print("❌ No hay contenedores para eliminar.")
|
||||
return
|
||||
|
||||
with open(CONTAINER_DATA_FILE, 'r') as file:
|
||||
containers = json.load(file)
|
||||
|
||||
if not containers:
|
||||
print("❌ No hay contenedores listados en el archivo JSON.")
|
||||
return
|
||||
|
||||
# Lista para los contenedores que no pudieron eliminarse
|
||||
remaining_containers = []
|
||||
|
||||
# Eliminar contenedores y redes
|
||||
for container in containers:
|
||||
try:
|
||||
# Comprobar si el contenedor existe realmente
|
||||
result = subprocess.getoutput(f"docker ps -a -q -f id={container['id']}")
|
||||
if not result:
|
||||
print(f"⚠️ El contenedor {container['name']} ya no existe. Eliminando del JSON...")
|
||||
else:
|
||||
print(f"➤ Eliminando contenedor: {container['name']} con ID: {container['id']}")
|
||||
os.system(f"docker rm -f {container['id']}")
|
||||
print(f"➤ Eliminando red: {container['network']}")
|
||||
os.system(f"docker network rm {container['network']}")
|
||||
except Exception as e:
|
||||
print(f"❌ Error eliminando el contenedor {container['name']}: {e}")
|
||||
# Guardar el contenedor en la lista si no se pudo eliminar
|
||||
remaining_containers.append(container)
|
||||
continue
|
||||
|
||||
# Actualizar el archivo JSON solo con los contenedores que no pudieron eliminarse
|
||||
if remaining_containers:
|
||||
with open(CONTAINER_DATA_FILE, 'w') as file:
|
||||
json.dump(remaining_containers, file, indent=4)
|
||||
print("⚠️ Algunos contenedores no pudieron eliminarse y se mantuvieron en el JSON.")
|
||||
else:
|
||||
# Si todos los contenedores fueron eliminados, vaciar el archivo JSON
|
||||
open(CONTAINER_DATA_FILE, 'w').close()
|
||||
print("✔ Todos los contenedores y redes han sido eliminados y el archivo JSON ha sido limpiado.")
|
||||
|
||||
|
||||
# -------------------------------
|
||||
# Función: Limpiar imágenes huérfanas
|
||||
# -------------------------------
|
||||
def clean_unused_images():
|
||||
print("➤ Eliminando imágenes huérfanas...")
|
||||
os.system('docker image prune -f')
|
||||
|
||||
# -------------------------------
|
||||
# Función: Limpiar redes huérfanas
|
||||
# -------------------------------
|
||||
def clean_unused_networks():
|
||||
print("➤ Eliminando redes huérfanas...")
|
||||
os.system('docker network prune -f')
|
||||
|
||||
|
||||
##############################################
|
||||
# Ejecución del script
|
||||
##############################################
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
# Eliminar todos los contenedores y redes
|
||||
delete_all_containers()
|
||||
|
||||
clean_unused_images()
|
||||
clean_unused_networks()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user