使用docker-compose創建Redis
版本信息:5.0.6
一、目錄結構如下
1.1 docker-compose.yaml
version: '3'
services:
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- 6379:6379
networks:
- mynetwork
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf:rw
- ./data:/data:rw
command:
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf "
networks:
mynetwork:
external: true
配置信息
1.1.1 設置docker compose版本
version: '3'
1.1.2 設置services
services:
redis:
設置 redis這個service的相關配置
1.1.2.1 指定鏡像
image: redis:latest
1.1.2.2 指定容器名稱
container_name: redis
1.1.2.3 重啟docker引擎后該容器也重啟
restart: always
1.1.2.4 指定映射端口
ports:
- 6379:6379
1.1.2.5 指定掛載目錄
掛載一個目錄或者一個已存在的數據卷容器,可以直接使用 [HOST:CONTAINER]格式,或者使用[HOST:CONTAINER:ro]格式,后者對於容器來說,數據卷是只讀的,可以有效保護宿主機的文件系統。
Compose的數據卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄。
這里配置了redis.conf
文件和data
目錄分別映射了主機的redis.conf
文件和主機的data
目錄
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf:rw
- ./data:/data:rw
1.1.2.6 啟動時執行的命令
使用command可以覆蓋容器啟動后默認執行的命令。這里啟動執行指定的redis.conf
文件
command:
/bin/bash -c "redis-server /usr/local/etc/redis/redis.conf "
1.1.2.7 使用的網絡
networks:
- mynetwork
1.1.3 網絡配置
networks:
mynetwork:
external: true
1.2 redis.conf
bind 0.0.0.0
protected-mode no
port 6379
timeout 0
save 900 1 # 900s內至少一次寫操作則執行bgsave進行RDB持久化
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /data
appendonly yes
appendfsync everysec
requirepass 12345678
這個是根據自己需要設置的redis配置參數
二、 啟動容器
2.1 后台啟動應用
~/Documents/workspace/docker_mapping_volume/redis ll
total 16
drwxr-xr-x@ 4 lucky staff 128B 9 2 21:50 data
-rw-r--r--@ 1 lucky staff 378B 9 1 16:43 docker-compose.yaml
-rw-r--r--@ 1 lucky staff 257B 9 1 16:44 redis.conf
-rw-r--r-- 1 lucky staff 0B 8 31 15:46 redis.log
-rw-r--r-- 1 lucky staff 0B 8 31 15:46 redis.pid
~/Documents/workspace/docker_mapping_volume/redis docker-compose up -d
Creating redis ... done
~/Documents/workspace/docker_mapping_volume/redis docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d784c652a20 redis:latest "docker-entrypoint.s…" 4 seconds ago Up 2 seconds 0.0.0.0:6379->6379/tcp redis
~/Documents/workspace/docker_mapping_volume/redis
- 使用 docker-compose up -d 命令后台啟動應用
- 使用docker ps 查看當前運行的容器
2.2 本地連接啟動的服務
~ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d784c652a20 redis:latest "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:6379->6379/tcp redis
~ docker exec -it 6d784c652a20 redis-cli
127.0.0.1:6379>
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 12345678
OK
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379>
- docker ps 查看當前運行的服務
- docker exec -it 6d784c652a20 redis-cli 連接redis服務
- keys * 查看當前redis中的key
- auth 12345678 驗證密碼
到此結束