欢迎来到窥视未来的博客

Fork me on GitHub

Docker-compose 安裝单机版redis

1、如果没有下载redis 镜像,在执行docker-compose 脚本时则会自动拉取指定镜像

 

2、挂载数据目录创建

mkdir -p /home/redis/data /home/redis/conf

 

  • data用来存储持久化文件

  • conf放置配置文件

3、配置远程连接、持久化RDB AOF

目录 :/home/redis/conf/redis.conf

 

# 修改连接为所有ip
bind 0.0.0.0
# 允许外网访问
protected-mode no
# port 6379
timeout 0
# RDB存储配置
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
# 数据存放位置
dir /home/redis/data
# 开启aof配置
appendonly yes
appendfsync everysec
appendfilename "appendonly.aof"
# 设置密码
# requirepass 123456

 

4、配置外部环境变量(建议env_file 引入的文件名为.env,最好不要使用其他名称)

  • 优点: .env文件变更会实时更新docker-compose中的引用,使用其他名称不会实时更新docker-compose中的引用,使用其他名称在docker-compose中引用有时会WARNING: The DB_DIR variable is not set. Defaulting to a blank string.

  • 缺点: 自定义名称不方便

通过touch .env命令创建隐藏文件

  touch .env

 

\

 

 

注意: env_file和environment中定义的环境变量是传给container用的而不是在docker-compose.yml中的环境变量用的

 

5、编写docker-compose.yml文件,在docker-redis-compose.yml文件引入.env环境变量

docker-redis-compose.yml 配置文件

 

version: '3.7'                   # docker文件的版本
services:
  master:
    image: redis                 # 指定容器镜像就是之前拉取的redis镜像
    container_name: redis        # 给这个镜像起一个别名
    privileged: true             # privileged 容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
    restart: always              # always:表示重启策略
    sysctls:
      - net.core.somaxconn=2048
    #command: /bin/bash -c "redis-server /home/redis/conf/redis.conf"
    command:
      - /bin/bash
      - -c
      - |       
         echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf &&
         redis-server --requirepass test@dbuser2023 
    env_file:
      - ./.env                         # 引用环境变量,最终是传入容器里交付件的启动命令中
    ports:
      - ${redis_port}:6379             # port mapping
    environment:
      # 设置环境变量 时区上海 编码UTF-8
      TZ: Asia/Shanghai
      LANG: en_US.UTF-8
    volumes:
      - $PWD/data:/data:rw                # data volume  mapping
      - ./conf/redis.conf:/home/redis/conf/redis.conf:rw
     # - ./redis.conf:/home/redis/data/conf/redis.conf:rw
      - $PWD/logs/redis.log:/logs/redis.log:rw

 

  

 

 

6、名词解释

 

名词描述
version docker文件的版本
image 指定容器镜像就是之前拉取的redis镜像
container_name 给这个镜像起一个别名
restart always:表示重启策略
command 相当于执行一些命令 (--requirepass 指定redis密码 --appendonly yes 这个命令是用于开启redis数据持久化)
ports 端口映射,将容器的端口映射到对应宿主机的端口
volumes 数据卷的映射.因为一旦容器停止了那么里面的数据也没有.所以我们需要把这个数据文件放在外面,然后映射到容器中

 

 

7、启动redis,使用如下命令 -d 挂在后台

## 在首次执行 尽量使用 这样可以看到报错
docker-compose -f docker-redis-compose.yml --compatibility up

## 后续没有问题了之后可以使用后台启动
docker-compose -f docker-redis-compose.yml up -d

 

 

## 查看redis是否启动成功,使用如下命令,看到红框中的状态是 UP  则表明启动redis成功
docker-compose -f docker-redis-compose.yml ps


## 复制宿主机文件到容器内docker cp ./a.txt 容器ID:/tmp/ 
docker cp /home/redis/conf/redis.conf 40d48f5850d8:/etc/redis/
  • --compatibility 是兼容性命令

  • up 是从拉取到构建到运行的全套指令

  • -d 是后台运行

docker-compose --compatibility up -d

 

如果使用失败了,可以使用如下命令查看日志,观察是什么原因造成的

docker logs -f redis | CONTAINER ID

 

 

出现 Ready to accept connections 说明启动成功

测试连接

 

 

8、连接成功

 

 

 

posted on 2021-06-18 09:43  窥视未来  阅读(903)  评论(0编辑  收藏  举报

导航