1、如果没有下载redis 镜像,在执行docker-compose 脚本时则会自动拉取指定镜像
2、挂载数据目录创建
mkdir -p /home/redis/data /home/redis/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.6‘ # 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 - | echo ‘vm.overcommit_memory = 1‘ >> /etc/redis/redis.conf & redis-server --requirepass test@dbuser2019 env_file: - ./.env # 引用环境变量,最终是传入容器里交付件的启动命令中 ports: - ${redis_port}:6379 # 端口映射,将容器的端口映射到对应宿主机的端口 environment: # 设置环境变量 时区上海 编码UTF-8 TZ: Asia/Shanghai LANG: en_US.UTF-8 volumes: - $PWD/data:/data:rw # 数据目录挂载 - $PWD/conf/redis.conf:/etc/redis/redis.conf:rw
名词 | 描述 |
---|---|
version | docker文件的版本 |
image | 指定容器镜像就是之前拉取的redis镜像 |
container_name | 给这个镜像起一个别名 |
restart | always:表示重启策略 |
command | 相当于执行一些命令 (--requirepass 指定redis密码 --appendonly yes 这个命令是用于开启redis数据持久化) |
ports | 端口映射,将容器的端口映射到对应宿主机的端口 |
volumes | 数据卷的映射.因为一旦容器停止了那么里面的数据也没有.所以我们需要把这个数据文件放在外面,然后映射到容器中 |
## 在首次执行 尽量使用 这样可以看到报错 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/
-
-
up 是从拉取到构建到运行的全套指令
-
docker-compose --compatibility up -d
如果使用失败了,可以使用如下命令查看日志,观察是什么原因造成的
docker logs -f redis | CONTAINER ID
出现 Ready to accept connections 说明启动成功
测试连接