Skip to content

Instantly share code, notes, and snippets.

@winggundamth
Last active August 7, 2016 08:12
Show Gist options
  • Save winggundamth/6bffc85205d4d23a6c0bceec91176803 to your computer and use it in GitHub Desktop.
Save winggundamth/6bffc85205d4d23a6c0bceec91176803 to your computer and use it in GitHub Desktop.
Bash shell to import/export database from container
#!/bin/bash
set -ex
DB_HOST=mysql
DB_USERNAME=root
DB_PASSWORD=password
DB_NAME=wp13
DB_IMAGE=mariadb:10.1.16
DB_CONTAINER=dockerwphlp_wp-db-hlp13_1
# From docker network ls
DB_NETWORK=dockerwphlp_default
# You shouldn't change this at all
DB_FILE_PATH=/backups
DB_FILE=${2:-"wp.sql"}
DB_PARAMETER="-h $DB_HOST -u$DB_USERNAME -p$DB_PASSWORD"
DB_OPS_CONTAINER_NAME=db-ops
# For restore file owner
# Get from id command
DB_UID=1525899080
DB_GID=329564321
# Check action argument
if [ -z "$1" ]; then
echo "Please specify action export or import"
exit 1
fi
# Build docker run command
DB_DOCKER_COMMAND="docker create --link $DB_CONTAINER:$DB_HOST \
--name $DB_OPS_CONTAINER_NAME --volume $DB_FILE_PATH \
--network $DB_NETWORK $DB_IMAGE \
bash -c"
docker rm -f $DB_OPS_CONTAINER_NAME || true
if [ "$1" == "import" ]; then
# Check if file exists
if [ ! -f "$DB_FILE" ]; then
echo "File $2 not found"
exit 1
fi
$DB_DOCKER_COMMAND \
"mysql $DB_PARAMETER -e \
'DROP DATABASE IF EXISTS $DB_NAME; \
CREATE DATABASE $DB_NAME' && \
mysql $DB_PARAMETER $DB_NAME < $DB_FILE_PATH/$DB_FILE"
docker cp $DB_FILE $DB_OPS_CONTAINER_NAME:$DB_FILE_PATH/$DB_FILE
docker start -a $DB_OPS_CONTAINER_NAME
elif [ "$1" == "export" ]; then
$DB_DOCKER_COMMAND \
"mysqldump $DB_PARAMETER $DB_NAME > $DB_FILE_PATH/$DB_FILE && \
chown $DB_UID:$DB_GID $DB_FILE_PATH/$DB_FILE"
docker start -a $DB_OPS_CONTAINER_NAME
docker cp $DB_OPS_CONTAINER_NAME:$DB_FILE_PATH/$DB_FILE $DB_FILE
fi
docker rm -f $DB_OPS_CONTAINER_NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment