我们目前正在尝试寻找一种更有效的方法来处理 MySQL docker 启动过程,目前有以下方法:
FROM mysql
ENV MYSQL_DATABASE marsdb
COPY ./src/main/resources/ /docker-entrypoint-initdb.d/
和
echo "Building database image..."
docker build -t marsdb -f Dockerfile.marsdb .
echo "Starting database and removing old database container."
docker rm -f marssql
docker run -d -p 3306:3306 --name marssql -e MYSQL_ROOT_PASSWORD=pass marsdb
此设置的问题如下:容器启动后,目前必须手动进入容器并选择数据库,在本例中 marsdb
如下所示:
docker exec -it marssql bin/bash
mysql -u root -p
pass
use marsdb;
有没有办法在容器启动后自动选择数据库?
最佳答案
只需将数据库名称传递给命令怎么样,这样您就不需要切换
mysql -u root -ppass marsdb
#or
docker exec -it marssql bin/bash -c "mysql -u root -ppass marsdb"
或者,如果您对 DB 不确定,那么您可以尝试使用默认的 DB 环境变量来运行容器。在此 MySQL 中将自动创建数据库,并将针对该数据库运行入口点脚本。
docker run -it --rm --name marssql -e DEFAULT_DB=marsedb -e MYSQL_ROOT_PASSWORD=pass -e MYSQL_DATABASE=marsedb mysql
然后你就可以连接了
docker exec -it marssql bin/bash -c "mysql -u root -ppass $DEFAULT_DB"
MYSQL_DATABASE
This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access (corresponding to GRANT ALL) to this database. MySQL docker Environment Variables
关于mysql - 如何在Docker启动时自动选择MySQL数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58969015/