rubyangxg 4 anni fa
parent
commit
b72b8abf3c

+ 170 - 0
redis-cluster/docker-compose.yml

@@ -19,6 +19,9 @@ services:
     volumes:
       - ./redis-cluster/conf/redis1.conf:/etc/redis.conf:rw
       - ${DATA_PATH}/redis1:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.41"
 
   redis2:
     <<: *defaults
@@ -26,6 +29,9 @@ services:
     volumes:
       - ./redis-cluster/conf/redis2.conf:/etc/redis.conf:rw
       - ${DATA_PATH}/redis2:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.42"
 
   redis3:
     <<: *defaults
@@ -33,6 +39,9 @@ services:
     volumes:
       - ./redis-cluster/conf/redis3.conf:/etc/redis.conf:rw
       - ${DATA_PATH}/redis3:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.43"
 
   redis4:
     <<: *defaults
@@ -40,6 +49,9 @@ services:
     volumes:
       - ./redis-cluster/conf/redis4.conf:/etc/redis.conf:rw
       - ${DATA_PATH}/redis4:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.44"
     depends_on:
       - redis1
       - redis2
@@ -51,6 +63,9 @@ services:
     volumes:
       - ./redis-cluster/conf/redis5.conf:/etc/redis.conf:rw
       - ${DATA_PATH}/redis5:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.45"
     depends_on:
       - redis1
       - redis2
@@ -62,6 +77,9 @@ services:
     volumes:
       - ./redis-cluster/conf/redis6.conf:/etc/redis.conf:rw
       - ${DATA_PATH}/redis6:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.46"
     depends_on:
       - redis1
       - redis2
@@ -78,6 +96,9 @@ services:
       - "26379"
     volumes:
       - ${DATA_PATH}/redis_cluster_creator:/data:rw
+    networks:
+      nas-network:
+        ipv4_address: "192.168.1.40"
     depends_on:
       - redis1
       - redis2
@@ -86,3 +107,152 @@ services:
       - redis5
       - redis6
 
+networks:
+  nas-network:
+    external: true
+#  redis2:
+#    env_file:
+#      - ../all.env
+#    container_name: redis2
+#    privileged: true
+#    build:
+#      context: redis-cluster
+#      args:
+#        REDIS_VERSION: 5.0.3-alpine
+#    ports:
+#      - "6379"
+#      - "26379"
+#    volumes:
+#      - ./redis-cluster/conf/redis2.conf:/etc/redis.conf:rw
+#      - ${DATA_PATH}/redis2:/data:rw
+#    restart: always
+#    stdin_open: true
+#    tty: true
+#    networks:
+#      nas-network:
+#        ipv4_address: "192.168.1.42"
+#
+#  redis3:
+#    env_file:
+#      - ../all.env
+#    container_name: redis3
+#    privileged: true
+#    build:
+#      context: redis-cluster
+#      args:
+#        REDIS_VERSION: 5.0.3-alpine
+#    ports:
+#      - "6379"
+#      - "26379"
+#    volumes:
+#      - ./redis-cluster/conf/redis3.conf:/etc/redis.conf:rw
+#      - ${DATA_PATH}/redis3:/data:rw
+#    restart: always
+#    stdin_open: true
+#    tty: true
+#    networks:
+#      nas-network:
+#        ipv4_address: "192.168.1.43"
+#
+#  redis4:
+#    env_file:
+#      - ../all.env
+#    container_name: redis4
+#    privileged: true
+#    build:
+#      context: redis-cluster
+#      args:
+#        REDIS_VERSION: 5.0.3-alpine
+#    ports:
+#      - "6379"
+#      - "26379"
+#    volumes:
+#      - ./redis-cluster/conf/redis4.conf:/etc/redis.conf:rw
+#      - ${DATA_PATH}/redis4:/data:rw
+#    restart: always
+#    stdin_open: true
+#    tty: true
+#    networks:
+#      nas-network:
+#        ipv4_address: "192.168.1.44"
+#    depends_on:
+#      - redis1
+#      - redis2
+#      - redis3
+#
+#  redis5:
+#    env_file:
+#      - ../all.env
+#    container_name: redis5
+#    privileged: true
+#    build:
+#      context: redis-cluster
+#      args:
+#        REDIS_VERSION: 5.0.3-alpine
+#    ports:
+#      - "6379"
+#      - "26379"
+#    volumes:
+#      - ./redis-cluster/conf/redis5.conf:/etc/redis.conf:rw
+#      - ${DATA_PATH}/redis5:/data:rw
+#    restart: always
+#    stdin_open: true
+#    tty: true
+#    networks:
+#      nas-network:
+#        ipv4_address: "192.168.1.45"
+#    depends_on:
+#      - redis1
+#      - redis2
+#      - redis3
+#
+#  redis6:
+#    env_file:
+#      - ../all.env
+#    container_name: redis6
+#    privileged: true
+#    build:
+#      context: redis-cluster
+#      args:
+#        REDIS_VERSION: 5.0.3-alpine
+#    ports:
+#      - "6379"
+#      - "26379"
+#    volumes:
+#      - ./redis-cluster/conf/redis6.conf:/etc/redis.conf:rw
+#      - ${DATA_PATH}/redis6:/data:rw
+#    restart: always
+#    stdin_open: true
+#    tty: true
+#    networks:
+#      nas-network:
+#        ipv4_address: "192.168.1.46"
+#    depends_on:
+#      - redis1
+#      - redis2
+#      - redis3
+#
+#  redis_cluster_creator:
+#    env_file:
+#      - ../all.env
+#    container_name: redis_cluster_creator
+#    privileged: true
+#    build:
+#      context: redis-cluster-creator
+#      args:
+#        REDIS_VERSION: 5.0.3-alpine
+#    ports:
+#      - "6379"
+#      - "26379"
+#    volumes:
+#      - ${DATA_PATH}/redis_cluster_creator:/data:rw
+#    networks:
+#      nas-network:
+#        ipv4_address: "192.168.1.40"
+#    depends_on:
+#      - redis1
+#      - redis2
+#      - redis3
+#      - redis4
+#      - redis5
+#      - redis6

+ 5 - 10
redis-cluster/redis-cluster-creator/Dockerfile

@@ -1,17 +1,12 @@
-FROM alpine:3.12.3
+FROM nasbase
 
+# install nginx
 RUN apk update \
+    && /container/tool/add-multiple-process-stack \
     && apk add \
     redis \
     nano \
     && rm -rf /var/cache/apk/*
 
-ADD startup.sh .
-
-ENV LANG="en_US.UTF-8" \
-    LANGUAGE="en_US:en" \
-    LC_ALL="en_US.UTF-8"
-
-ENTRYPOINT ["/bin/bash startup.sh"]
-
-EXPOSE 6379 26379
+ADD service /container/service
+RUN /container/tool/install-service

+ 35 - 0
redis-cluster/redis-cluster-creator/service/creator/startup.sh

@@ -0,0 +1,35 @@
+#!/bin/bash -e
+#!/bin/bash -e
+FIRST_START_DONE="${CONTAINER_STATE_DIR}/creator-first-start-done"
+
+# container first start
+if [ ! -e "$FIRST_START_DONE" ]; then
+  ###################  以下代码保证创建容器后只执行一次 除非执行:docker-compose $params up --force-recreate --build -d redis-cluster-creator
+  echo "create cluster start..."
+  sleep 5
+  redis-cli -h 192.168.1.41 flushall
+  redis-cli -h 192.168.1.42 flushall
+  redis-cli -h 192.168.1.43 flushall
+  redis-cli -h 192.168.1.44 flushall
+  redis-cli -h 192.168.1.45 flushall
+  redis-cli -h 192.168.1.46 flushall
+
+  redis-cli -h 192.168.1.41 CLUSTER RESET
+  redis-cli -h 192.168.1.42 CLUSTER RESET
+  redis-cli -h 192.168.1.43 CLUSTER RESET
+  redis-cli -h 192.168.1.44 CLUSTER RESET
+  redis-cli -h 192.168.1.45 CLUSTER RESET
+  redis-cli -h 192.168.1.46 CLUSTER RESET
+
+  sleep 5
+  echo "yes" | redis-cli --cluster create 192.168.1.41:6379 192.168.1.42:6379 192.168.1.43:6379 192.168.1.44:6379 192.168.1.45:6379 192.168.1.46:6379 --cluster-replicas 1
+  echo "create cluster end !"
+
+  redis-cli -c -h 192.168.1.46 cluster nodes
+  ###################  以上代码保证创建容器后只执行一次
+  touch $FIRST_START_DONE
+fi
+
+echo "The secret is: $FIRST_START_SETUP_ONLY_SECRET"
+
+exit 0

+ 7 - 7
redis-cluster/redis-cluster/Dockerfile

@@ -1,15 +1,15 @@
-FROM alpine:3.12.3
+FROM nasbase
 
+# install nginx
 RUN apk update \
+    && /container/tool/add-multiple-process-stack \
     && apk add \
     redis \
     nano \
     && rm -rf /var/cache/apk/*
 
-ENV LANG="en_US.UTF-8" \
-    LANGUAGE="en_US:en" \
-    LC_ALL="en_US.UTF-8"
-
-ENTRYPOINT ["docker-entrypoint.sh"]
-CMD [ "redis-server /etc/redis.conf" ]
+# Add service directory to /container/service
+ADD service /container/service
+RUN /container/tool/install-service
+#ADD environment /container/environment/99-default
 EXPOSE 6379 26379

+ 2 - 0
redis-cluster/redis-cluster/service/redis_server/install.sh

@@ -0,0 +1,2 @@
+#!/bin/bash -e
+echo "do nothing"

+ 2 - 0
redis-cluster/redis-cluster/service/redis_server/process.sh

@@ -0,0 +1,2 @@
+#!/bin/bash -e
+exec redis-server /etc/redis.conf