Docker部署常见应用之数据库


在这里插入图片描述

概要

Redis部署

  1. 获取Redis镜像:

    • 使用Docker从官方仓库拉取Redis镜像:
      docker pull redis:6.2.6
      
  2. 创建Redis配置文件:

    • 在宿主机上创建一个目录用于存放Redis配置文件:
      mkdir -p /data/docker/redis/conf
      
  3. 创建Redis数据持久化目录:

    • 在宿主机上创建一个目录用于Redis数据的持久化存储:
      mkdir -p /data/docker/redis/data
      
  4. 创建配置文件

    • 创建配置文件redis.conf
      cd /data/docker/redis/conf
      touch redis.conf
      
    • 根据需要增加配置信息, 下面设置密码
      requirepass 123456
      
  5. 启动Redis容器:

    • 使用以下命令启动Redis容器,并将配置文件和数据目录挂载到容器中:
      docker run \
        -d \
        --restart always \
        --name redis \
        -p 6379:6379 \
        -v /data/docker/redis/data:/data \
        -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
        redis:6.2.6 redis-server /etc/redis/redis.conf
      
      其中:
      • -d 表示后台运行容器。
      • --restart always 设置容器的重启策略。
      • --name redis 为容器指定一个名称。
      • -p 6379:6379 将容器的6379端口映射到宿主机的6379端口。
      • -v /data/docker/redis/data:/data 将宿主机的数据目录挂载到容器中。
      • -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf 将宿主机的配置文件挂载到容器中。
      • redis:6.2.6 指定要使用的Redis镜像和版本(6.2.6)。
      • redis-server /etc/redis/redis.conf 指定Redis服务器使用挂载的配置文件启动。
  6. 测试Redis服务:

    • 进入Redis容器:
      docker exec -it redis /bin/bash
      
    • 连接到Redis服务器:
      redis-cli
      
    • 使用auth命令进行认证:
      auth 123456
      

MySQL部署

  1. 获取MySQL镜像:

    • 使用Docker从官方仓库拉取MySQL镜像:
      docker pull mysql:5.7
      
  2. 创建MySQL宿主机挂载目录:

    • 在宿主机上创建一个目录用于存放MySQL配置文件:
      mkdir -p /data/docker/mysql/conf
      
    • 在宿主机上创建一个目录用于MySQL数据的持久化存储:
      mkdir -p /data/docker/mysql/data
      
    • 在宿主机上创建一个目录用于存放MySQL的用户名,密码
       mkdir -p /data/docker/mysql/env
      
  3. 创建环境变量文件

    • 创建配置文件`env_file
      cd /data/docker/redis/env
      touch env_file
      
    • 增加环境变量信息
      MYSQL_ROOT_PASSWORD=123456
      MYSQL_USER=test
      MYSQL_PASSWORD=123456
      TZ=Asia/Shanghai
      LANG=en_US.UTF-8
      
  4. 启动MySQL容器

    • 使用以下命令启动MySQL容器,并将配置文件和数据目录挂载到容器中:
      docker run \
        -d \
        --restart always \
        --name mysql \
        -p  3306:3306 \
        --env-file  /data/docker/mysql/env/env_file  \
        -v /data/docker/mysql/data:/var/lib/mysql \
        -v /data/docker/mysql/conf:/etc/mysql/conf.d \
        mysql:5.7
      
      其中:
      • -d 表示后台运行容器。
      • --restart always 设置容器的重启策略。
      • --name mysql 为容器指定一个名称。
      • -p 3306:3306 将容器的3306端口映射到宿主机的3306端口。
      • --env-file /data/docker/mysql/env/env_file 从宿主机env_file文件中加载环境变量。
      • -v /data/docker/mysql/data:/var/lib/mysql 将宿主机的数据目录挂载到容器中。
      • -v /data/docker/mysql/conf:/etc/mysql/conf.d 将宿主机的配置文件挂载到容器中。
      • mysql:5.7 指定要使用的MySQL镜像和版本(5.7)。
  5. 测试MySQL服务:

    • 进入MySQL容器:

      docker exec -it mysql /bin/bash
      
    • 连接到MySQL服务器:

      mysql  -h 127.0.0.1 -uroot -p
      

      输入你的root密码,然后你将进入MySQL命令行界面。

    • 创建测试库

      CREATE DATABASE test;
      USE test;
      
    • 创建学生表

      在MySQL命令行界面中,你可以使用CREATE TABLE语句来创建一个新的表。例如,创建一个名为students的表,包含学生ID、姓名、年龄和专业字段:

      CREATE TABLE students (
          id INT AUTO_INCREMENT PRIMARY KEY,
          name VARCHAR(100) NOT NULL,
          age INT,
          major VARCHAR(100)
      );
      

      这条命令创建了一个名为students的表,其中包含四个字段:

      • id:学生的唯一标识符,自动增长的整数。
      • name:学生的名字,字符串类型,最多100个字符。
      • age:学生的年龄,整数类型。
      • major:学生的专业,字符串类型,最多100个字符。
    • 插入数据

      创建表之后,你可以使用INSERT INTO语句向表中插入数据。例如:

      INSERT INTO students (name, age, major) VALUES ('张三', 20, '计算机科学');
      INSERT INTO students (name, age, major) VALUES ('李四', 22, '机械工程');
      

      这些命令将向students表中插入两条记录。

    • 查看数据

      插入数据后,你可以使用SELECT语句来查看表中的所有数据:

      SELECT * FROM students;
      

      这将列出students表中的所有记录。

    • 退出MySQL

      完成操作后,可以通过输入exit命令或按Ctrl + D退出MySQL命令行界面。

ClickHouse部署

  1. 获取ClickHouse镜像:

    • 使用Docker从官方仓库拉取ClickHouse镜像:
      docker pull clickhouse/clickhouse-server:23.12
      
  2. 创建ClickHouse宿主机挂载目录:

    • 在宿主机上创建一个目录用于存放ClickHouse配置文件:
      mkdir -p /data/docker/clickhouse/conf
      
    • 在宿主机上创建一个目录用于ClickHouse数据的持久化存储:
      mkdir -p /data/docker/clickhouse/data
      
  3. 增加配置信息

    • 导出配置 config.xml 和 users.xml 文件
      # config.xml 文件导出
      docker run --rm --entrypoint=cat clickhouse/clickhouse-server:23.12 /etc/clickhouse-server/config.xml > /data/docker/clickhouse/conf/config.xml
      # users.xml 文件导出
      docker run --rm --entrypoint=cat clickhouse/clickhouse-server:23.12 /etc/clickhouse-server/users.xml > /data/docker/clickhouse/conf/users.xml
      
    • 修改users.xml文件
       <root>             
          <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
          <networks incl="networks" replace="replace">
          <ip>::/0</ip>
          </networks>
          <profile>default</profile>
          <quota>default</quota>
       </root>
      
      其中<password_sha256_hex>....</password_sha256_hex>里面是加密后的密码, 使用如下命令生成:
      echo -n "123456" | sha256sum | tr -d '-'
      8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c9
      
  4. 启动ClickHouse容器

    • 使用以下命令启动ClickHouse容器,并将配置文件和数据目录挂载到容器中:
      docker run \
        -d \
        --restart always \
        --name clickhouse \
        --ulimit nofile=262144:262144 \
        -p 8123:8123 \
        -p 9000:9000 \
        -v /data/docker/clickhouse/data:/var/lib/clickhouse \
        -v /data/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
        -v /data/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
        clickhouse/clickhouse-server:23.12
      
      其中:
      • -d 表示后台运行容器。
      • --restart always 设置容器的重启策略。
      • --name clickhouse 为容器指定一个名称。
      • --ulimit nofile=262144:262144 设置容器的文件句柄限制。ClickHouse 需要较高的文件句柄数来处理大量数据,这里设置为 262144。
      • -p 8123:8123 将容器内部的 TCP 端口 8123 映射到宿主机的 TCP 端口 8123。这是 ClickHouse 的 HTTP 接口端口,用于 Web 界面访问和某些类型的客户端连接。
      • -p 9000:9000 将容器内部的 TCP 端口 9000 映射到宿主机的 TCP 端口 9000。这是 ClickHouse 的原生 TCP 协议端口,用于客户端连接。
        - -v /data/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml 将宿主机上的 ClickHouse 配置文件 config.xml 挂载到容器内的相应位置。这样您就可以自定义 ClickHouse 的配置。
        -v /data/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml 将宿主机上的 ClickHouse 用户配置文件 users.xml 挂载到容器内。这个文件包含了用户账号和权限设置
      • clickhouse/clickhouse-server:23.12 指定要运行的 ClickHouse 镜像及其版本标签 23.12。如果标签不指定,默认为 latest。。
  5. 测试ClickHouse服务:

    • 进入ClickHouse容器:

      docker exec -it clickhouse /bin/bash
      
    • 连接到ClickHouse服务器:

      clickhouse-client -u root
      

      输入你的root密码,然后你将进入ClickHouse命令行界面。

    • 创建测试库

      CREATE DATABASE IF NOT EXISTS school;
      USE school;
      
    • 创建考试成绩表

      假设考试成绩表需要包含学生ID、姓名、考试日期、科目和成

      CREATE TABLE IF NOT EXISTS student_scores
      (
          student_id UInt32,
      	name String,
          exam_date Date,
      	subject String,
      	score UInt8
      ) ENGINE = MergeTree()
      ORDER BY (student_id, exam_date, subject);
      

    这里使用 MergeTree 引擎,按 student_id、exam_date 和 subject 排序和分区数据。

    • 插入数据

      向 student_scores 表中插入一些示例数据:

      INSERT INTO student_scores (student_id, name, exam_date, subject, score) VALUES
      (1, 'Alice', '2024-05-01', 'Math', 92),
      (1, 'Alice', '2024-05-02', 'Science', 88),
      (2, 'Bob', '2024-05-01', 'Math', 75),
      (2, 'Bob', '2024-05-02', 'Science', 80);
      
    • 查看数据

      • 插入数据后,你可以使用SELECT语句来查看表中的所有数据:

        SELECT * FROM student_scores;
        
      • 计算每个学生的平均成绩

        SELECT
           student_id,
           name,
           AVG(score) AS average_score
        FROM student_scores
        GROUP BY student_id, name;
        
    • 退出ClickHouse

      完成操作后,可以通过输入exit命令或按Ctrl + D退出ClickHouse命令行界面。

PostgreSQL部署

  • 17
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值