首页 > 数据库 >构建包含mysql和redis服务的docker镜像

构建包含mysql和redis服务的docker镜像

时间:2024-05-04 13:33:17浏览次数:19  
标签:-- redis yum && mysql docker password

直接上dockerfile代码

 1 FROM centos:centos7.9.2009
 2 RUN yum install -y wget && \
 3     wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm && \
 4     yum -y localinstall mysql80-community-release-el7-11.noarch.rpm && \
 5     rm mysql80-community-release-el7-11.noarch.rpm && \
 6     yum-config-manager --disable mysql80-community && \
 7     yum-config-manager --enable mysql57-community && \
 8     yum -y install mysql-community-server && \
 9     sed -i '/^PIDFile=\/var\/run\/mysqld\/mysqld.pid/s/^/# /' /usr/lib/systemd/system/mysqld.service && \
10     yum install -y epel-release && \
11     yum install -y redis && \
12     sed -i '/^bind 127.0.0.1/s/^/# /' /etc/redis.conf && \
13     sed -i 's/protected-mode yes/protected-mode no/' /etc/redis.conf && \
14     yum remove -y wget epel-release  && \
15     yum clean all
16 COPY start.sh /start.sh
17 RUN chmod +x /start.sh
18 ENTRYPOINT ["/start.sh"]

启动脚本

 1 #!/bin/bash
 2 
 3 # 检查 MySQL 数据目录是否存在数据文件
 4 if [ ! -f /var/lib/mysql/ibdata1 ]; then
 5     # 执行 MySQL 初始化
 6     mysqld --initialize --explicit_defaults_for_timestamp --user=mysql
 7     echo "MySQL initialized!"
 8     # 启动 MySQL 服务器
 9     echo "Starting MySQL server..."
10     mysqld --user=mysql &
11 
12     sleep 5s
13     if grep -q "A temporary password is generated" /var/log/mysqld.log; then
14         # 获取初始密码
15         initial_password=$(grep "A temporary password is generated" /var/log/mysqld.log | awk '{print $NF}')
16         echo "Initial password: $initial_password"
17 
18         # 修改密码
19         mysql -uroot -p"$initial_password" --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '1qaz2wsx';"
20         if [ $? -eq 0 ]; then
21             echo "Root password changed successfully!"
22         else
23             echo "Failed to change root password!"
24             exit 1
25         fi
26         mysql -uroot -p1qaz2wsx --connect-expired-password -e <<EOF
27 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;28 FLUSH PRIVILEGES;
29 EOF
30     fi
31 fi
32 
33 # 启动 MySQL 服务器
34 echo "Starting MySQL server..."
35 mysqld --user=mysql &
36 
37 # 启动 Redis 服务器
38 echo "Starting Redis server..."
39 redis-server /etc/redis.conf
40 
41 echo "services started."
42 
43 # 持续监听,保持容器运行
44 tail -f /dev/null

生成docker镜像

docker build -t mysql-redis .

启动docker容器

宿主机器的3306端口要转发给容器内的mysql服务监听端口,6379端口要转发给容器内的redis服务端口。

docker run -d --name mysql-redis -p 6379:6379 -p 3306:3306  mysql-redis:latest

启动的docker容器的redis服务已经设置了可以远程连接,mysql远程连接的root用户,密码root

接下去就可以用这个超级用户创建新的数据库了,例如

CREATE DATABASE IF NOT EXISTS new_database DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'new_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON new_database.* TO 'new_user'@'%';

注意把上面数据库名,密码等信息换成实际的

 

标签:--,redis,yum,&&,mysql,docker,password
From: https://www.cnblogs.com/shixiaobin/p/18172221

相关文章

  • redis实战优化二
    参考:图灵课堂缓存穿透之布隆过滤器对于恶意攻击,向服务器请求大量不存在的数据造成的缓存穿透,还可以用布隆过滤器先做一次过滤,对于不存在的数据布隆过滤器一般都能够过滤掉,不让请求再往后端发送。当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在。......
  • MySQL 数据库自增主键生成的优缺点
    MySQL数据库中使用自增主键(AUTO_INCREMENT)作为表的主键有以下显著的优点和缺点:**优点**:1.**简化开发**:开发人员不需要手动指定每条记录的唯一标识,减少了出错的可能性。2.**性能优化**:自增主键通常会导致数据在物理存储上近乎顺序地排列,这能够提升基于主键的查询效率,特别......
  • docker简单笔记
     这里不说基础概念的东西,直接上车出发 指令 docker-compose--help docker-composeup   会自动下载运行依赖,然后跑到容器隔离环境中docker-composedown--rmiall   删除由DockerCompose管理的所有容器 安装(我的版本20.10.5) 简单例子 如果遇......
  • mysql 锁,和加锁机制
    背景间隙锁是MySQL在RR可重复读隔离级别下用来修复幻读才引入的一种锁,间隙锁也只有在RR可重复读隔离级别下才会存在,如果是在RC读已提交隔离级别下,是没有间隙锁的存在的。另外,我们也知道,幻读这种现象也只有在当前读的时候才会发生,在一致性快照读的情况下是没有幻读现象的。那么间......
  • Redis官方开源的可视化管理工具 - RedisInsight
    前言今天大姚给大家推荐一款Redis官方开源的可视化管理工具:RedisInsight。Redis介绍Redis(RemoteDictionaryServer)是一个使用C语言编写的,开源的(遵守BSD协议)高性能的、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库。工具介绍RedisInsight是......
  • MySQL 8.4 初探
    MySQL8.4现已正式发布,这是一个具有重大意义的版本,因为它被指定为长期支持(LTS)版本。LTS软件的引入意味着MySQL8.0.34+将成为一个仅修复错误的版本。创新版本可能每季度发布一次,新的长期支持版本大约每两年发布一次。8.4版本将持续到2026年初。但请记住,将它们纳入主流长期......
  • redis7下载及安装详细步骤
    Redis7详细安装步骤必备环境:centos7(64位)  gcc检查命令:出现下面内容,说明gcc安装成功了  如果没有出现上图的内容,则先进行gcc的安装命令:yum-yinstallgcc -c++1.下载安装包:https://redis.io/downloads/,本次安装以redis7.0.0为例2下载获得redis-7.0.0.tar.......
  • MySQL-08.索引的创建和设计原则
    C-08.索引的创建和设计原则1.索引的声明和使用1.1索引的分类MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从功能逻辑上分类,索引主要有4种,分别是普通索引,唯一索引,主键索引,全文索引。按照物理实现方式,索引可以分为2种,聚簇索引和非聚簇......
  • MySQL分页查询优化
    CREATETABLEteacher( `id`BIGINT(20)NOTNULLAUTO_INCREMENTPRIMARYKEY,`teacher_id`CHAR(30)NOTNULLUNIQUEKEY, `name`VARCHAR(30)NOTNULL)ENGINE=INNODB;insertintoteacher(teacher_id,name)values('aaa','aaa');inserti......
  • redis缓存和业务应用了解
    转自:https://tech.meituan.com/2017/03/17/cache-about.html1.介绍在主页中显示最新的项目列表:Redis使用的是常驻内存的缓存,速度非常快。LPUSH用来插入一个内容ID,作为关键字存储在列表头部。LTRIM用来限制列表中的项目数最多为5000。如果用户需要的检索的数据量超越这个缓存容......