10.docker學習筆記之入門,docker-compose端口映射可能會導致的問題

docker run的時候如果用上了-p或者docker-compose up -d 的時候用了ports:,那麼就存在端口映射,在配置主從的時候,監聽公網的其他端口如:

這個時候需要配置從節點真實公網映射的地址和端口

# slave-announce-ip 5.5.5.5
# slave-announce-port 1234

哨兵真實公網映射地址和端口

# sentinel announce-ip <ip>
# sentinel announce-port <port>

集羣真實公網映射地址和端口

# cluster-announce-ip <ip> #地址
# cluster-announce-port <port> #數據端口
# cluster-announce-bus-port <port> #節點通信端口

可以配合sh腳本和docker-compose 來達到動態修改的效果

docker-compose.yaml

version: "3.6"
#設置網絡環境
networks:
    #引用外部預先定義好的網段
    redis-network:
        external:
            name: redis-network
services:
    sentinel-1:
        image: redis
        container_name: sentinel-1
        ports:
            - "26386:26379"
        networks:
            redis-network:
                ipv4_address: 192.168.1.14
        volumes:
            - "/usr/docker/08/sentinel-1:/usr/src/redis"
        environment: #環境變量
            - REALIP=XXX.XXX.XXX.XXX 
            - REALPORT=26386
        command: ["redis-sentinel","/usr/src/redis/conf/sentinel.conf"]
        entrypoint: #執行
            - /bin/sh
            - /usr/src/sh/redis.sh
        privileged: true  #特殊權限
        working_dir: /usr/src/redis #工作目錄
        stdin_open: true  #打開標準輸入
        tty: true  #模擬僞終端

redis.sh

echo " slave-announce-ip $REALIP
       slave-announce-port $REALPORT " >> /usr/src/redis/conf/redis.conf
redis-server /usr/src/redis/conf/redis.conf
 

生成redis docker的Dockerfile

FROM alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
  && apk add  gcc g++ libc-dev  wget vim  openssl-dev make  linux-headers \
  && rm -rf /var/cache/apk/*

#通過選擇更小的鏡像,刪除不必要文件清理不必要的安裝緩存,從而瘦身鏡像
#創建相關目錄能夠看到日誌信息跟數據跟配置文件
RUN mkdir -p /usr/src/redis \
      && mkdir -p /usr/src/redis/data \
      && mkdir -p /usr/src/redis/conf \
      && mkdir -p /usr/src/sh         \
      && mkdir -p /usr/src/redis/log   \
      && mkdir -p /var/log/redis
RUN wget  -O /usr/src/redis/redis-4.0.11.tar.gz  "http://download.redis.io/releases/redis-4.0.11.tar.gz" \
   && tar -xzf /usr/src/redis/redis-4.0.11.tar.gz  -C /usr/src/redis \
   && rm -rf /usr/src/redis/redis-4.0.11.tar.tgz

RUN cd /usr/src/redis/redis-4.0.11 &&  make && make PREFIX=/usr/local/redis install \
&& ln -s /usr/local/redis/bin/*  /usr/local/bin/  && rm -rf /usr/src/redis/redis-4.0.11

COPY ./redis/sh/redis.sh   /usr/src/sh
RUN  chmod +x  /usr/src/sh/redis.sh


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章