Add docker_containers_oci

This commit is contained in:
vijay 2026-03-21 05:03:14 +00:00
parent 52dd9cf0e6
commit 186709b990

123
docker_containers_oci Normal file
View File

@ -0,0 +1,123 @@
#!/bin/bash
BASE_DIR="/mnt/data"
CONTAINERS_DIR="$BASE_DIR/containers"
VOLUMES_DIR="$BASE_DIR/volumes"
# Ensure base dirs exist
mkdir -p "$CONTAINERS_DIR"
mkdir -p "$VOLUMES_DIR"
function create_container() {
echo "Enter container name (e.g. dockhand, grafana):"
read NAME
if [ -z "$NAME" ]; then
echo "❌ Name cannot be empty"
return
fi
CONTAINER_PATH="$CONTAINERS_DIR/$NAME"
VOLUME_PATH="$VOLUMES_DIR/$NAME/data"
if [ -d "$CONTAINER_PATH" ]; then
echo "⚠️ Container already exists!"
return
fi
echo "🚀 Creating structure..."
mkdir -p "$CONTAINER_PATH"
mkdir -p "$VOLUME_PATH"
COMPOSE_FILE="$CONTAINER_PATH/docker-compose.yml"
cat <<EOF > "$COMPOSE_FILE"
version: "3.9"
services:
$NAME:
image: your-image-here
container_name: $NAME
restart: unless-stopped
ports:
- "PORT:PORT"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- $VOLUME_PATH:/app/data
environment:
- TZ=Australia/Melbourne
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# networks:
# ${NAME}_net:
# driver: bridge
EOF
echo "✅ Created:"
echo "📁 $CONTAINER_PATH"
echo "📁 $VOLUME_PATH"
echo "📄 docker-compose.yml"
echo ""
echo "👉 Opening docker-compose.yml for editing..."
sleep 1
nano "$COMPOSE_FILE"
}
function start_container() {
echo "Enter container name to start:"
read NAME
CONTAINER_PATH="$CONTAINERS_DIR/$NAME"
if [ ! -d "$CONTAINER_PATH" ]; then
echo "❌ Container not found!"
return
fi
cd "$CONTAINER_PATH" || return
docker compose up -d
echo "✅ Container started"
}
function list_containers() {
echo "📦 Available containers:"
ls "$CONTAINERS_DIR"
}
function main_menu() {
while true; do
clear
echo "======================================"
echo " 🚀 Container Management Menu"
echo "======================================"
echo "1. Create New Container"
echo "2. Start Container"
echo "3. List Containers"
echo "4. Exit"
echo "======================================"
echo "Choose an option:"
read OPTION
case $OPTION in
1) create_container ;;
2) start_container ;;
3) list_containers; read -p "Press enter to continue..." ;;
4) exit 0 ;;
*) echo "❌ Invalid option"; sleep 1 ;;
esac
done
}
main_menu