option 1 : persist db files
docker run --name mysql -p 3306:3306 -v /foo/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abcdefg -d mysql:5.7.17
docker run -d -p 3306:3306 --name database -v /foo/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
docker run -d -p 3306:3306 --name mysql -v /foo/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -e TZ=America/Lima mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
export MYSQL_ROOT_PASSWORD=supersecret
export MYSQL_PASSWORD=changeme
export MYSQL_USER=joe
export MYSQL_DATABASE=acme
# folder with some sql dump (without create statement)
export DATABASE_CREATE_SQL=/foo/bar/database
docker run -d -p 3306:3306 \
-v $DATABASE_CREATE_SQL:/docker-entrypoint-initdb.d \
-v /opt/mysql_data:/var/lib/mysql \
--name mysql-5-7 \
-e MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
-e MYSQL_USER=$MYSQL_USER \
-e MYSQL_PASSWORD=$MYSQL_PASSWORD \
-e MYSQL_DATABASE=$MYSQL_DATABASE \
--restart=always \
mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
https://stackoverflow.com/a/69906588/3957754