# 使用官方的MySQL 5.7镜像作为基础镜像
FROM mysql:5.7
# 设置数据库字符集和排序规则
ENV MYSQL_DATABASE=mydb
ENV MYSQL_ROOT_PASSWORD=my-secret-pw
ENV MYSQL_USER=myuser
ENV MYSQL_PASSWORD=myuser-password
# 创建一个新的数据库
RUN echo "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" | mysql -u root --password=${MYSQL_ROOT_PASSWORD}
# 容器启动时,运行自定义脚本来创建用户和设置权限
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
entrypoint.sh 脚本:
#!/bin/bash
# 等待MySQL服务启动
sleep 5
# 创建新用户并授权
mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD';"
mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "GRANT ALL PRIVILEGES ON mydb.* TO '$MYSQL_USER'@'%';"
mysql -u root --password=$MYSQL_ROOT_PASSWORD -e "FLUSH PRIVILEGES;"
# 启动MySQL服务
exec "$@"
这个Dockerfile和entrypoint.sh脚本展示了如何使用Docker部署MySQL数据库,并在启动时创建一个新用户和设置权限。这是一个简化的例子,实际部署时可能需要更多的配置和安全措施。