1. 程式人生 > >手寫redis的docker文件,通過docker-compose配置redis

手寫redis的docker文件,通過docker-compose配置redis

版本號 chown 位置 res docker try poi 監聽端口 執行權

在前面一遍隨筆,配置的是mysql主從的docker-compose配置。今天我們來學習配置編排容器redis。

準備環境:

docker 18.06.1-ce

docker-compose 1.23.0-rc3

redis最新版

開始:

1、首先我們創建下docker文件的目錄,並新建Dockerfile、redis-entrypoint.sh、redis.conf

如下圖:

技術分享圖片

Dockerfile文件內容如下:

FROM redis:latest        #指定啟動容器的鏡像

MAINTAINER cc <cc@qq.com>  #署名

RUN mkdir -p /redis/log;   #在容器裏運行創建目錄/redis/log

WORKDIR /redis     #設置工作目錄為/redis

COPY redis.conf .  #拷貝redis.conf配置文件到工作目錄(這裏其實就是在Dockerfile同級下的redis.conf文件拷貝到容器內當前工作目錄,也就是/redis目錄)
COPY redis-entrypoint.sh /usr/local/bin/ #拷貝redis.entrypoint.sh 到容器內/usr/local/bin/目錄下

RUN chown redis:redis /redis/* && \   #給容器內的/redis/*設置歸屬用戶,並設置redis.entrypoint.sh文件的可執行權限
    chmod +x /usr/local/bin/redis-entrypoint.sh

EXPOSE 6379       #暴露端口6379

CMD ["redis-entrypoint.sh"]  #執行redis-entrypoint.sh文件

redis.conf內容如下:

#修改daemonize為yes,即默認以後臺程序方式運行(還記得前面手動使用&號強制後臺運行嗎)。  
daemonize no 
#可修改默認監聽端口  
port $REDIS_PORT  
#修改生成默認日誌文件位置  
logfile "/redis/log/redis.log"  
#配置持久化文件存放位置  
dir "/tmp"
requirepass $REDIS_PASSWORD

redis-entrypoint.sh內容如下:

#!/usr/bin/env sh

sed -i "s/\$REDIS_PORT/$REDIS_PORT/g" /redis/redis.conf   #聲明參數,為了docker-compose裏面可以動態配置
sed -i "s/\$REDIS_PASSWORD/$REDIS_PASSWORD/g" /redis/redis.conf  #聲明參數
    
redis-server /redis/redis.conf

到這步,我們就以及把redis的所有配置都準備好了,接下來在Dockerfile的目錄,執行腳本,生成redis鏡像文件

2、生成docker 鏡像文件

docker build -t iqeq/redis:1.0 .   # 生成了一個iqeq/redis:1.0的鏡像文件

3、編排docker-compose文件

version: ‘3‘ #版本號

services:
redis:
container_name: redis_container #容器名,自定義
image: iqeq/redis:1.0 #剛才生成的鏡像名
environment: #環境參數:配置剛才shell啟動腳本裏面聲明的2個參數

- REDIS_PORT=6379
- REDIS_PASSWORD=密碼
ports: #暴露容器內部端口6379並映射到外部也為6379
- "6379:6379"
restart: unless-stopped #啟動方式
volumes:
- $PWD/redis/data:/data #文件綁定掛載:$PWD表示當前目錄,然後這裏就是當前目錄下的/redis/data子目錄,掛載為容器內的/data目錄
- $PWD/redis/log:/redis/log

然後保存文件為docker-compose.yml

4、查看下我們整個工作的目錄結構

技術分享圖片

寫的不是很好,制作的時候,特別要註意的目錄要相對應的配對哈。

最後:

我們在docker-compose.yml的同級目錄下,執行以下腳本:

docker-compose up -d

成功啟動。

技術分享圖片

手寫redis的docker文件,通過docker-compose配置redis