|
|
@@ -0,0 +1,39 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# Usage: ./convert_bind_to_named_volume.sh <container_name> <bind_mount_path> <named_volume>
|
|
|
+# Example: ./convert_bind_to_named_volume.sh mycontainer /data my_named_volume
|
|
|
+
|
|
|
+set -e
|
|
|
+
|
|
|
+CONTAINER="$1"
|
|
|
+BIND_PATH="$2"
|
|
|
+NAMED_VOL="$3"
|
|
|
+
|
|
|
+if [[ -z "$CONTAINER" || -z "$BIND_PATH" || -z "$NAMED_VOL" ]]; then
|
|
|
+ echo "Usage: $0 <container_name> <bind_mount_path> <named_volume>"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+# Create the named volume if it doesn't exist
|
|
|
+docker volume create "$NAMED_VOL"
|
|
|
+
|
|
|
+# Copy data from the bind mount to a temporary location
|
|
|
+TMPDIR=$(mktemp -d)
|
|
|
+docker cp "$CONTAINER:$BIND_PATH/." "$TMPDIR"
|
|
|
+
|
|
|
+# Stop and remove the old container
|
|
|
+docker stop "$CONTAINER"
|
|
|
+docker rm "$CONTAINER"
|
|
|
+
|
|
|
+# Start a temporary container to copy data into the named volume
|
|
|
+docker run --rm -v "$NAMED_VOL":/vol -v "$TMPDIR":/from busybox sh -c "cp -a /from/. /vol/"
|
|
|
+
|
|
|
+echo "Data copied to named volume: $NAMED_VOL"
|
|
|
+
|
|
|
+echo "Now recreate your container, replacing:"
|
|
|
+echo " -v /host/path:$BIND_PATH"
|
|
|
+echo "with:"
|
|
|
+echo " -v $NAMED_VOL:$BIND_PATH"
|
|
|
+
|
|
|
+# Clean up
|
|
|
+rm -rf "$TMPDIR"
|