Mysql 5.7.38 in Debian Linux with cronjob and nano editor
1.3K
https://github.com/docker-library/mysql/tree/7c4eca3ee491d62d3aa5442c864c43355ab34f1b/5.7
Standalone
Simple deployment with root password. Root password can be configured to secret.
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d n0bility6/mysql:5.7
This command deploy your mysql with credentials and persistent volume.
docker run -dit -e MYSQL_ROOT_PASSWORD=root -e MYSQL_USER=sample_user -e MYSQL_PASSWORD=secret_password -e MYSQL_DATABASE=sampledb -v /mysql/data:/var/lib/mysql -v /cronjob/backup/:/etc/cron.d/ n0bility6/mysql:5.7
Restore .sql Backup to new database.
cat backupname.sql | docker exec -i CONTAINERID /usr/bin/mysql -u root --password=root DATABASENAME
Stack
version: '3.7'
services:
#MySQL Service
database:
image: n0bility6/mysql:5.7
command: --default-authentication-plugin=mysql_native_password
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_USER=sample_user
- MYSQL_PASSWORD=sample_password
- MYSQL_DATABASE=sampledb
volumes:
- ./mysql/data:/var/lib/mysql #Persistent Data
- ./backupscript/:/etc/cron.d/ #Cronjob location
restart: always
Sample backup script cron job with filename script, place it inside backupscript folder and mount it to ./backupscript/:/etc/cron.d/
# m h dom mon dow user command
58 23 * * 1 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/monday.sql
58 23 * * 2 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/tuesday.sql
58 23 * * 3 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/wednesday.sql
58 23 * * 4 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/thursday.sql
58 23 * * 5 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/friday.sql
58 23 * * 6 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/saturday.sql
58 23 * * 7 root mysqldump databasename --user=root --password=root > /var/lib/mysql/Backup/sunday.sql
Add cron and nano in Dockerfile RUN command
Original
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*
Updated
RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr cron nano && rm -rf /var/lib/apt/lists/*
Add custom command in docker-entrypoint.sh inside _main() function.
_main() {
# if command starts with an option, prepend mysqld
if [ "${1:0:1}" = '-' ]; then
set -- mysqld "$@"
fi
# skip setup if they aren't running mysqld or want an option that stops mysqld
if [ "$1" = 'mysqld' ] && ! _mysql_want_help "$@"; then
mysql_note "Entrypoint script for MySQL Server ${MYSQL_VERSION} started."
mysql_check_config "$@"
# Load various environment variables
docker_setup_env "$@"
docker_create_db_directories
# If container is started as root user, restart as dedicated mysql user
if [ "$(id -u)" = "0" ]; then
#====================Custom command======================
#Start Cron service first as root user
service cron start
echo "Starting periodic command scheduler: cron started!"
chown root /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/*
chmod 644 /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/*
echo "Starting periodic command scheduler: Changed ownership of /etc/cron.d/ /etc/cron.daily/ /etc/cron.hourly/ /etc/cron.monthly/ /etc/cron.weekly/ files to root user."
#====================Custom command======================
mysql_note "Switching to dedicated user 'mysql'"
exec gosu mysql "$BASH_SOURCE" "$@"
fi
# there's no database, so it needs to be initialized
if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
docker_verify_minimum_env
# check dir permissions to reduce likelihood of half-initialized database
ls /docker-entrypoint-initdb.d/ > /dev/null
docker_init_database_dir "$@"
mysql_note "Starting temporary server"
docker_temp_server_start "$@"
mysql_note "Temporary server started."
mysql_socket_fix
docker_setup_db
docker_process_init_files /docker-entrypoint-initdb.d/*
mysql_expire_root_user
mysql_note "Stopping temporary server"
docker_temp_server_stop
mysql_note "Temporary server stopped"
echo
mysql_note "MySQL init process done. Ready for start up."
echo
else
mysql_socket_fix
fi
fi
exec "$@"
}
# If we are sourced from elsewhere, don't perform any further actions
if ! _is_sourced; then
_main "$@"
fi
Content type
Image
Digest
Size
155.1 MB
Last updated
over 4 years ago
docker pull n0bility6/mysql:5.7