Last active
March 31, 2020 21:57
-
-
Save pavelsr/699cb1d886f37c8e7a0939b9e9831125 to your computer and use it in GitHub Desktop.
Script for quickly moving docker volume to another server
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Script for quickly moving docker volume to another server | |
echo "List of all running docker containers" | |
docker ps --format "table {{.Names}}" | |
echo " ============================== " | |
docker ps --format='{{.Name }}' | |
# defaults | |
REMOTE_HOST='admin@193.124.205.64' | |
REMOTE_FOLDER='/home/admin/inbox/www' | |
CONTAINER='nginx' | |
read -p "Type the name of container which you want to backup, default is $CONTAINER : " input | |
CONTAINER=${input:-$CONTAINER} | |
read -p "Type the remote host details, default is $REMOTE_HOST: " input | |
REMOTE_HOST=${input:-$REMOTE_HOST} | |
read -p "Specify full path to existing remote folder, default is $REMOTE_FOLDER: " input | |
REMOTE_FOLDER=${input:-$REMOTE_FOLDER} | |
for row in $(docker inspect $CONTAINER | jq -cr '.[].Mounts[].Source'); do | |
echo "Working with volume ${row}" | |
cd ${row} | |
tar -zcvf $CONTAINER.tar.gz * | |
ssh $REMOTE_HOST "mkdir -p $REMOTE_FOLDER" | |
scp $CONTAINER.tar.gz $REMOTE_HOST:$REMOTE_FOLDER/.. | |
ssh $REMOTE_HOST "tar -xvf $REMOTE_FOLDER/../$CONTAINER.tar.gz -C $REMOTE_FOLDER" | |
done |
TO-DO: write an installator like for docker:
local example
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
or without inspection:
curl -sSL https://get.docker.io/ubuntu/ | sudo sh
curl -sSL https://get.docker.com/ | sh # if you have admin privileges
Docker-compose for auto-importing backup.sql:
version: '2'
services:
opencart:
restart: always
image: vimagick/opencart
networks:
- proxy-tier
volumes:
- ${PWD}/www:/var/www/html
environment:
VIRTUAL_HOST: fabmarkt.ru
VIRTUAL_PORT: 80
LETSENCRYPT_HOST: fabmarkt.ru
LETSENCRYPT_EMAIL: p@fabmarkt.ru
depends_on:
- "mysql"
mysql:
restart: always
image: mysql
networks:
- proxy-tier
volumes:
- ${PWD}/backup.sql:/docker-entrypoint-initdb.d/backup.sql
- ${PWD}/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=opencart
networks:
proxy-tier:
external:
name: nginx-proxy
In addition to move-volume
and move-database
also need:
move-file
move-directory # move folder without compression (convenient for small folders)
move-to-user # move folders from home to home inside host
TO-DO:
quick deployment of nginx-proxy
Test database backup import:
docker run -v $(pwd)/backup.sql:/docker-entrypoint-initdb.d/backup.sql -it mysql:5.7 mysql -uroot -proot -Dopencart
error during mysql dump
InnoDB: Table flags are 0 in the data dictionary but the flags in file
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Move database