Add docker_containers_oci
This commit is contained in:
parent
52dd9cf0e6
commit
186709b990
123
docker_containers_oci
Normal file
123
docker_containers_oci
Normal 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
|
||||||
Loading…
x
Reference in New Issue
Block a user