65 lines
2.2 KiB
Bash
65 lines
2.2 KiB
Bash
BACKUP_DIR='/docker/backup'
|
|
ALL_CONTAINER=$(docker ps --format '{{.Names}}')
|
|
ALL_PROJECTS=$(for i in $ALLCONTAINER; do docker inspect --format '{{ index .Config.Labels "com.docker.compose.project.working_dir"}}' $i; done | sort -u)
|
|
|
|
EXPORT_DIR='./export'
|
|
|
|
for project in $ALL_PROJECTS; do
|
|
PROJECT_NAME=${project##*/}
|
|
|
|
#todo loop
|
|
read -p "Stop docker $PROJECT_NAME (y/n)?" choice
|
|
case "$choice" in
|
|
y|Y ) docker stop $PROJECT_NAME;;
|
|
n|N ) continue;;
|
|
* ) echo "invalid";;
|
|
esac
|
|
|
|
mkdir $EXPORT_DIR/$PROJECT_NAME
|
|
echo "Exporting docker-compose.yml"
|
|
cp $project/docker-compose.yml $EXPORT_DIR/$PROJECT_NAME
|
|
|
|
ALL_IMAGES="todo"
|
|
for j in $ALL_IMAGES; do
|
|
#save
|
|
ALL_VOLUMES=$(docker inspect -f '{{index .Mounts 0}}' $j)
|
|
for k in $ALL_VOLUMES; do
|
|
#save
|
|
done
|
|
done
|
|
|
|
docker start $PROJECT_NAME
|
|
|
|
#zip everything
|
|
done
|
|
|
|
ALL_CONTAINER=$(docker ps --format '{{.Names}}')
|
|
ALL_PROJECTS=$(for i in $ALL_CONTAINER; do docker inspect --format '{{ index .Config.Labels "com.docker.compose.project.working_dir"}}' $i; done | sort -u)
|
|
|
|
EXPORT_DIR='./export'
|
|
|
|
for project in $ALL_PROJECTS; do
|
|
PROJECT_NAME=${project##*/}
|
|
echo -e '\n project: '$project
|
|
|
|
# all images
|
|
while read -r image; do
|
|
echo 'img: '$image
|
|
done < <(grep -Po "(?<=image: ).*$" $project/docker-compose.yml)
|
|
|
|
# all container name
|
|
while read -r name; do
|
|
echo 'container: '$name
|
|
while read -r volume; do
|
|
echo "vol: "$volume
|
|
done < <(docker inspect --format="{{.Mounts}}" $name | grep '[\{.+\}]*')
|
|
done < <(grep -Po '(?<=container_name: ).*$' $project/docker-compose.yml)
|
|
done
|
|
|
|
|
|
# test multi volumes
|
|
# postgres
|
|
# jisti using config env
|
|
docker inspect --format="{{.Mounts}}" synapse
|
|
|
|
[{bind /etc/localtime /etc/localtime ro false rprivate} {volume nextcloud_nextcloud /var/lib/docker/volumes/nextcloud_nextcloud/_data /var/www/html local rw true } {bind /docker/nextcloud/app/config /var/www/html/config rw true rprivate} {bind /docker/nextcloud/app/custom_apps /var/www/html/custom_apps rw true rprivate} {bind /media/nextcloud /var/www/html/data rw true rprivate} {bind /docker/nextcloud/app/themes /var/www/html/themes rw true rprivate}] |