Docker部署常见应用之数据库

打印 上一主题 下一主题

主题 1028|帖子 1028|积分 3084


概要

Redis部署


  • 获取Redis镜像:

    • 使用Docker从官方堆栈拉取Redis镜像:
      1. docker pull redis:6.2.6
      复制代码

  • 创建Redis设置文件:

    • 在宿主机上创建一个目录用于存放Redis设置文件:
      1. mkdir -p /data/docker/redis/conf
      复制代码

  • 创建Redis数据持久化目录:

    • 在宿主机上创建一个目录用于Redis数据的持久化存储:
      1. mkdir -p /data/docker/redis/data
      复制代码

  • 创建设置文件

    • 创建设置文件redis.conf
      1. cd /data/docker/redis/conf
      2. touch redis.conf
      复制代码
    • 根据需要增长设置信息, 下面设置暗码
      1. requirepass 123456
      复制代码

  • 启动Redis容器:

    • 使用以下下令启动Redis容器,并将设置文件和数据目录挂载到容器中:
      1. docker run \
      2.   -d \
      3.   --restart always \
      4.   --name redis \
      5.   -p 6379:6379 \
      6.   -v /data/docker/redis/data:/data \
      7.   -v /data/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
      8.   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服务器使用挂载的设置文件启动。


  • 测试Redis服务:

    • 进入Redis容器:
      1. docker exec -it redis /bin/bash
      复制代码
    • 毗连到Redis服务器:
      1. redis-cli
      复制代码
    • 使用auth下令举行认证:
      1. auth 123456
      复制代码

MySQL部署


  • 获取MySQL镜像:

    • 使用Docker从官方堆栈拉取MySQL镜像:
      1. docker pull mysql:5.7
      复制代码

  • 创建MySQL宿主机挂载目录:

    • 在宿主机上创建一个目录用于存放MySQL设置文件:
      1. mkdir -p /data/docker/mysql/conf
      复制代码
    • 在宿主机上创建一个目录用于MySQL数据的持久化存储:
      1. mkdir -p /data/docker/mysql/data
      复制代码
    • 在宿主机上创建一个目录用于存放MySQL的用户名,暗码
      1. mkdir -p /data/docker/mysql/env
      复制代码

  • 创建情况变量文件

    • 创建设置文件`env_file
      1. cd /data/docker/redis/env
      2. touch env_file
      复制代码
    • 增长情况变量信息
      1. MYSQL_ROOT_PASSWORD=123456
      2. MYSQL_USER=test
      3. MYSQL_PASSWORD=123456
      4. TZ=Asia/Shanghai
      5. LANG=en_US.UTF-8
      复制代码

  • 启动MySQL容器

    • 使用以下下令启动MySQL容器,并将设置文件和数据目录挂载到容器中:
      1. docker run \
      2.   -d \
      3.   --restart always \
      4.   --name mysql \
      5.   -p  3306:3306 \
      6.   --env-file  /data/docker/mysql/env/env_file  \
      7.   -v /data/docker/mysql/data:/var/lib/mysql \
      8.   -v /data/docker/mysql/conf:/etc/mysql/conf.d \
      9.   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)。


  • 测试MySQL服务:

    • 进入MySQL容器:
      1. docker exec -it mysql /bin/bash
      复制代码
    • 毗连到MySQL服务器:
      1. mysql  -h 127.0.0.1 -uroot -p
      复制代码
      输入你的root暗码,然后你将进入MySQL下令行界面。
    • 创建测试库
      1. CREATE DATABASE test;
      2. USE test;
      复制代码
    • 创建门生表
      在MySQL下令行界面中,你可以使用CREATE TABLE语句来创建一个新的表。例如,创建一个名为students的表,包罗门生ID、姓名、年龄和专业字段:
      1. CREATE TABLE students (
      2.     id INT AUTO_INCREMENT PRIMARY KEY,
      3.     name VARCHAR(100) NOT NULL,
      4.     age INT,
      5.     major VARCHAR(100)
      6. );
      复制代码
      这条下令创建了一个名为students的表,此中包罗四个字段:

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

    • 插入数据
      创建表之后,你可以使用INSERT INTO语句向表中插入数据。例如:
      1. INSERT INTO students (name, age, major) VALUES ('张三', 20, '计算机科学');
      2. INSERT INTO students (name, age, major) VALUES ('李四', 22, '机械工程');
      复制代码
      这些下令将向students表中插入两条记录。
    • 查看数据
      插入数据后,你可以使用SELECT语句来查看表中的所有数据:
      1. SELECT * FROM students;
      复制代码
      这将列出students表中的所有记录。
    • 退出MySQL
      完成操纵后,可以通过输入exit下令或按Ctrl + D退出MySQL下令行界面。

ClickHouse部署


  • 获取ClickHouse镜像:

    • 使用Docker从官方堆栈拉取ClickHouse镜像:
      1. docker pull clickhouse/clickhouse-server:23.12
      复制代码

  • 创建ClickHouse宿主机挂载目录:

    • 在宿主机上创建一个目录用于存放ClickHouse设置文件:
      1. mkdir -p /data/docker/clickhouse/conf
      复制代码
    • 在宿主机上创建一个目录用于ClickHouse数据的持久化存储:
      1. mkdir -p /data/docker/clickhouse/data
      复制代码

  • 增长设置信息

    • 导出设置 config.xml 和 users.xml 文件
      1. # config.xml 文件导出
      2. docker run --rm --entrypoint=cat clickhouse/clickhouse-server:23.12 /etc/clickhouse-server/config.xml > /data/docker/clickhouse/conf/config.xml
      3. # users.xml 文件导出
      4. docker run --rm --entrypoint=cat clickhouse/clickhouse-server:23.12 /etc/clickhouse-server/users.xml > /data/docker/clickhouse/conf/users.xml
      复制代码
    • 修改users.xml文件
      1. <root>            
      2.     <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
      3.     <networks incl="networks" replace="replace">
      4.     <ip>::/0</ip>
      5.     </networks>
      6.     <profile>default</profile>
      7.     <quota>default</quota>
      8. </root>
      复制代码
      此中<password_sha256_hex>....</password_sha256_hex>里面是加密后的暗码, 使用如下下令生成:
      1. echo -n "123456" | sha256sum | tr -d '-'
      2. 8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c9
      复制代码

  • 启动ClickHouse容器

    • 使用以下下令启动ClickHouse容器,并将设置文件和数据目录挂载到容器中:
      1. docker run \
      2.   -d \
      3.   --restart always \
      4.   --name clickhouse \
      5.   --ulimit nofile=262144:262144 \
      6.   -p 8123:8123 \
      7.   -p 9000:9000 \
      8.   -v /data/docker/clickhouse/data:/var/lib/clickhouse \
      9.   -v /data/docker/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
      10.   -v /data/docker/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
      11.   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。。


  • 测试ClickHouse服务:

    • 进入ClickHouse容器:
      1. docker exec -it clickhouse /bin/bash
      复制代码
    • 毗连到ClickHouse服务器:
      1. clickhouse-client -u root
      复制代码
      输入你的root暗码,然后你将进入ClickHouse下令行界面。
    • 创建测试库
      1. CREATE DATABASE IF NOT EXISTS school;
      2. USE school;
      复制代码
    • 创建考试成绩表
      假设考试成绩表需要包罗门生ID、姓名、考试日期、科目和成
      1. CREATE TABLE IF NOT EXISTS student_scores
      2. (
      3.     student_id UInt32,
      4.         name String,
      5.     exam_date Date,
      6.         subject String,
      7.         score UInt8
      8. ) ENGINE = MergeTree()
      9. ORDER BY (student_id, exam_date, subject);
      复制代码
    这里使用 MergeTree 引擎,按 student_id、exam_date 和 subject 排序和分区数据。
       

    • 插入数据
      向 student_scores 表中插入一些示例数据:
      1. INSERT INTO student_scores (student_id, name, exam_date, subject, score) VALUES
      2. (1, 'Alice', '2024-05-01', 'Math', 92),
      3. (1, 'Alice', '2024-05-02', 'Science', 88),
      4. (2, 'Bob', '2024-05-01', 'Math', 75),
      5. (2, 'Bob', '2024-05-02', 'Science', 80);
      复制代码
    • 查看数据

      • 插入数据后,你可以使用SELECT语句来查看表中的所有数据:
        1. SELECT * FROM student_scores;
        复制代码
      • 计算每个门生的平均成绩
        1. SELECT
        2.    student_id,
        3.    name,
        4.    AVG(score) AS average_score
        5. FROM student_scores
        6. GROUP BY student_id, name;
        复制代码

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

PostgreSQL部署


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表