1. 程式人生 > 實用技巧 >使用docker-compose建立Redis

使用docker-compose建立Redis

使用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 驗證密碼

到此結束