├── .gitignore ├── LICENSE ├── README.md ├── activemq ├── README.md ├── data │ ├── conf │ │ └── .gitignore │ └── data │ │ └── .gitignore └── docker-compose.yml ├── docker-elk ├── README.md └── docker-compose.yml ├── drone-oss ├── README.md ├── data │ └── .gitignore └── docker-compose.yml ├── drone ├── README.md ├── data │ └── .gitignore └── docker-compose.yml ├── elasticsearch ├── README.md ├── data │ ├── data01 │ │ └── .gitignore │ ├── data02 │ │ └── .gitignore │ └── data03 │ │ └── .gitignore └── docker-compose.yml ├── gitea ├── README.md ├── data │ └── .gitignore └── docker-compose.yml ├── gitlab ├── README.md ├── data │ ├── config │ │ ├── gitlab-runner │ │ │ └── .gitignore │ │ └── gitlab │ │ │ └── .gitignore │ ├── data │ │ └── .gitignore │ └── logs │ │ └── .gitignore └── docker-compose.yml ├── gogs ├── README.md ├── data │ └── .gitignore └── docker-compose.yml ├── harbor ├── README.md ├── data │ ├── chartmuseum_data │ │ └── .gitignore │ ├── config │ │ ├── core │ │ │ └── .gitignore │ │ ├── jobservice │ │ │ └── .gitignore │ │ ├── proxy │ │ │ └── .gitignore │ │ ├── registry │ │ │ └── .gitignore │ │ └── registryctl │ │ │ └── .gitignore │ ├── core_data │ │ └── .gitignore │ ├── jobservice_data │ │ └── .gitignore │ ├── postgresql_data │ │ └── .gitignore │ └── registry_data │ │ └── .gitignore └── docker-compose.yml ├── kafka ├── README.md ├── data │ ├── kafka │ │ └── .gitignore │ └── zookeeper │ │ └── .gitignore └── docker-compose.yml ├── minio ├── README.md ├── data │ ├── config │ │ └── .gitignore │ └── data │ │ └── .gitignore └── docker-compose.yml ├── mysql ├── README.md ├── data │ ├── config │ │ └── custom.cnf │ ├── data │ │ └── .gitignore │ └── logs │ │ └── .gitignore └── docker-compose.yml ├── nacos ├── README.md ├── cluster │ ├── README.md │ ├── docker-compose.yml │ └── nacos_cluster-for-2.0.3.sql ├── data │ ├── custom.properties │ │ └── .gitignore │ └── logs │ │ └── .gitignore └── docker-compose.yml ├── nats-jetstream ├── README.md ├── conf │ ├── nats-1 │ │ └── cluster.conf │ ├── nats-2 │ │ └── cluster.conf │ └── nats-3 │ │ └── cluster.conf ├── data │ └── .gitignore └── docker-compose.yml ├── nexus ├── README.md ├── data │ └── .gitignore └── docker-compose.yml ├── postgres ├── README.md ├── data │ └── postgres │ │ └── .gitignore └── docker-compose.yml ├── prometheus-stack ├── README.md ├── alertmanager │ └── alertmanager.yml ├── blackbox-exporter │ └── blackbox.yml ├── dingtalk-webhook │ └── config.yml ├── docker-compose.yml └── prometheus │ └── prometheus.yml ├── pulsar ├── README.md ├── data │ ├── pulsarconf │ │ └── .gitignore │ └── pulsardata │ │ └── .gitignore └── docker-compose.yml ├── redis ├── README.md ├── cluster │ ├── README.md │ └── docker-compose.yml ├── data │ ├── config │ │ └── .gitignore │ └── data │ │ └── .gitignore └── docker-compose.yml ├── rocketmq ├── README.md ├── data │ └── broker │ │ ├── conf │ │ └── broker.conf │ │ ├── logs │ │ └── .gitignore │ │ └── store │ │ └── .gitignore └── docker-compose.yml ├── sonarqube ├── README.md ├── data │ ├── postgres │ │ └── .gitignore │ ├── sonarqube_data │ │ └── .gitignore │ ├── sonarqube_extensions │ │ └── .gitignore │ └── sonarqube_logs │ │ └── .gitignore └── docker-compose.yml ├── svn-server ├── README.md ├── data │ ├── .gitignore │ └── config │ │ └── subversion-access-control └── docker-compose.yml └── valkey └── cluster ├── README.md ├── config └── valkey.conf ├── create-cluster.sh ├── docker-compose.yaml └── nodes ├── node1 ├── data │ └── .gitignore └── valkey-node.conf ├── node2 ├── data │ └── .gitignore └── valkey-node.conf ├── node3 ├── data │ └── .gitignore └── valkey-node.conf ├── node4 ├── data │ └── .gitignore └── valkey-node.conf ├── node5 ├── data │ └── .gitignore └── valkey-node.conf └── node6 ├── data └── .gitignore └── valkey-node.conf /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | !.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 keepchen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | #### docker-compose 2 | 3 | - 简介 4 | 5 | ```text 6 | 将平时用到的组件的容器化配置整合放到一起,需要时,便于查阅(好记性不如烂笔头),于是就有了这个项目。 7 | ``` -------------------------------------------------------------------------------- /activemq/README.md: -------------------------------------------------------------------------------- 1 | #### activemq 2 | 3 | [Docs Reference](https://hub.docker.com/r/rmohr/activemq) -------------------------------------------------------------------------------- /activemq/data/conf/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /activemq/data/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /activemq/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | activeMQ: 5 | image: "rmohr/activemq:5.15.4-alpine" 6 | container_name: activeMQ 7 | ports: 8 | - "61616:61616" 9 | - "8161:8161" 10 | volumes: 11 | - ./data/conf:/mnt/conf 12 | - ./data/data:/mnt/data 13 | restart: always -------------------------------------------------------------------------------- /docker-elk/README.md: -------------------------------------------------------------------------------- 1 | #### docker-elk 2 | 3 | ```text 4 | 注意:需要下载对应的仓库资源才能正确运行起来。 5 | 6 | -> https://github.com/deviantony/docker-elk 7 | ``` 8 | 9 | [Docs Reference](https://github.com/deviantony/docker-elk) -------------------------------------------------------------------------------- /docker-elk/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.7' 2 | 3 | services: 4 | 5 | # The 'setup' service runs a one-off script which initializes the 6 | # 'logstash_internal' and 'kibana_system' users inside Elasticsearch with the 7 | # values of the passwords defined in the '.env' file. 8 | # 9 | # This task is only performed during the *initial* startup of the stack. On all 10 | # subsequent runs, the service simply returns immediately, without performing 11 | # any modification to existing users. 12 | setup: 13 | build: 14 | context: setup/ 15 | args: 16 | ELASTIC_VERSION: ${ELASTIC_VERSION} 17 | init: true 18 | volumes: 19 | - setup:/state:Z 20 | environment: 21 | ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-} 22 | LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-} 23 | KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-} 24 | networks: 25 | - elk 26 | 27 | elasticsearch: 28 | build: 29 | context: elasticsearch/ 30 | args: 31 | ELASTIC_VERSION: ${ELASTIC_VERSION} 32 | volumes: 33 | - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro,z 34 | - elasticsearch:/usr/share/elasticsearch/data:z 35 | ports: 36 | - "9200:9200" 37 | - "9300:9300" 38 | environment: 39 | ES_JAVA_OPTS: -Xms512m -Xmx512m 40 | # Bootstrap password. 41 | # Used to initialize the keystore during the initial startup of 42 | # Elasticsearch. Ignored on subsequent runs. 43 | ELASTIC_PASSWORD: ${ELASTIC_PASSWORD:-} 44 | # Use single node discovery in order to disable production mode and avoid bootstrap checks. 45 | # see: https://www.elastic.co/guide/en/elasticsearch/reference/current/bootstrap-checks.html 46 | discovery.type: single-node 47 | networks: 48 | - elk 49 | 50 | logstash: 51 | build: 52 | context: logstash/ 53 | args: 54 | ELASTIC_VERSION: ${ELASTIC_VERSION} 55 | volumes: 56 | - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro,Z 57 | - ./logstash/pipeline:/usr/share/logstash/pipeline:ro,Z 58 | ports: 59 | - "5044:5044" 60 | - "5000:5000/tcp" 61 | - "5000:5000/udp" 62 | - "9600:9600" 63 | environment: 64 | LS_JAVA_OPTS: -Xms256m -Xmx256m 65 | LOGSTASH_INTERNAL_PASSWORD: ${LOGSTASH_INTERNAL_PASSWORD:-} 66 | networks: 67 | - elk 68 | depends_on: 69 | - elasticsearch 70 | 71 | kibana: 72 | build: 73 | context: kibana/ 74 | args: 75 | ELASTIC_VERSION: ${ELASTIC_VERSION} 76 | volumes: 77 | - ./kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro,Z 78 | ports: 79 | - "5601:5601" 80 | environment: 81 | KIBANA_SYSTEM_PASSWORD: ${KIBANA_SYSTEM_PASSWORD:-} 82 | networks: 83 | - elk 84 | depends_on: 85 | - elasticsearch 86 | 87 | networks: 88 | elk: 89 | driver: bridge 90 | 91 | volumes: 92 | setup: 93 | elasticsearch: -------------------------------------------------------------------------------- /drone-oss/README.md: -------------------------------------------------------------------------------- 1 | #### drone-oss 2 | 3 | [Docs Reference](https://hub.docker.com/r/keepchen/drone) -------------------------------------------------------------------------------- /drone-oss/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /drone-oss/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | drone-server: 5 | container_name: drone-server 6 | image: "keepchen/drone:2.0.4" 7 | environment: 8 | - DRONE_GITLAB_SERVER=CHANGE_ME #http://192.168.224.1:8888 9 | - DRONE_GITLAB_CLIENT_ID=CHANGE_ME 10 | - DRONE_GITLAB_CLIENT_SECRET=CHANGE_ME 11 | # - DRONE_RPC_SECRET=CHANGE_ME 12 | - DRONE_SERVER_HOST=192.168.224.50:9080 13 | - DRONE_SERVER_PROTO=http 14 | - DRONE_LOGS_DEBUG=true 15 | - DRONE_LOGS_TEXT=true 16 | - DRONE_LOGS_PRETTY=true 17 | - DRONE_LOGS_COLOR=false 18 | - DRONE_AGENTS_DISABLED=true 19 | # - DRONE_DATABASE_DRIVER=mysql 20 | # - DRONE_DATABASE_DATASOURCE=root:12345678@tcp(127.0.0.1:3306)/drone?parseTime=true 21 | - DRONE_USER_CREATE=username:keepchen,admin:true,token:CHANGE_ME 22 | ports: 23 | - "9080:80" 24 | - "9443:443" 25 | restart: always 26 | volumes: 27 | - ./data:/data 28 | - /var/run/docker.sock:/var/run/docker.sock 29 | -------------------------------------------------------------------------------- /drone/README.md: -------------------------------------------------------------------------------- 1 | # drone 2 | 3 | #### 简介 4 | drone是一个CI/CD的工具,它可以与github、bitbucket、gitlab、gitea、gogs、gitee等等代码仓库结合, 5 | 让他们具备执行持续集成与发布的流水线能力。 6 | 7 | [官网地址](https://www.drone.io/) 8 | 实践分享博客:[GitLab+Drone使用体验](https://blog.keepchen.com/a/the-gitlab-drone-experience.html) -------------------------------------------------------------------------------- /drone/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /drone/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | drone-server: 5 | container_name: drone-server 6 | image: "drone/drone:latest" 7 | environment: 8 | - DRONE_GITLAB_SERVER=CHANGE_ME #http://192.168.224.1:8888 9 | - DRONE_GITLAB_CLIENT_ID=CHANGE_ME 10 | - DRONE_GITLAB_CLIENT_SECRET=CHANGE_ME 11 | - DRONE_RPC_SECRET=CHANGE_ME 12 | - DRONE_SERVER_HOST=CHANGE_ME #192.168.224.2:9080 13 | - DRONE_SERVER_PROTO=http 14 | - DRONE_LOGS_DEBUG=true 15 | - DRONE_LOGS_TEXT=true 16 | - DRONE_LOGS_PRETTY=true 17 | - DRONE_LOGS_COLOR=false 18 | - DRONE_DATABASE_DRIVER=mysql 19 | - DRONE_DATABASE_DATASOURCE=CHANGE_ME #root:123456@tcp(192.168.224.1:3306)/drone?parseTime=true 20 | - DRONE_USER_CREATE=username:keepchen,admin:true,token:CHANGE_ME 21 | ports: 22 | - "9080:80" 23 | - "9443:443" 24 | restart: always 25 | volumes: 26 | - ./data:/data 27 | 28 | drone-runner: 29 | container_name: drone-runner 30 | image: "drone/drone-runner-docker:latest" 31 | environment: 32 | - DRONE_RPC_PROTO=http 33 | - DRONE_RPC_HOST=CHANGE_ME #192.168.224.2:9080 34 | - DRONE_RPC_SECRET=CHANGE_ME 35 | - DRONE_RUNNER_CAPACITY=5 36 | - DRONE_RUNNER_NAME=CHANGE_ME #192.168.224.3 37 | - DRONE_LOGS_DEBUG=true 38 | - DRONE_LOGS_TEXT=true 39 | - DRONE_LOGS_PRETTY=true 40 | - DRONE_LOGS_COLOR=false 41 | ports: 42 | - "9030:3000" 43 | restart: always 44 | volumes: 45 | - /var/run/docker.sock:/var/run/docker.sock 46 | 47 | -------------------------------------------------------------------------------- /elasticsearch/README.md: -------------------------------------------------------------------------------- 1 | #### Elasticsearch 2 | 3 | [Docs Reference](https://www.elastic.co/guide/en/elasticsearch/reference/7.5/docker.html) -------------------------------------------------------------------------------- /elasticsearch/data/data01/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /elasticsearch/data/data02/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /elasticsearch/data/data03/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /elasticsearch/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | es01: 4 | image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2 5 | container_name: es01 6 | environment: 7 | - node.name=es01 8 | - cluster.name=es-docker-cluster 9 | - discovery.seed_hosts=es02,es03 10 | - cluster.initial_master_nodes=es01,es02,es03 11 | - bootstrap.memory_lock=true 12 | - "ES_JAVA_OPTS=-Xms512m -Xmx512m" 13 | ulimits: 14 | memlock: 15 | soft: -1 16 | hard: -1 17 | volumes: 18 | - ./data/data01:/usr/share/elasticsearch/data 19 | ports: 20 | - "9200:9200" 21 | networks: 22 | - elastic 23 | es02: 24 | image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2 25 | container_name: es02 26 | environment: 27 | - node.name=es02 28 | - cluster.name=es-docker-cluster 29 | - discovery.seed_hosts=es01,es03 30 | - cluster.initial_master_nodes=es01,es02,es03 31 | - bootstrap.memory_lock=true 32 | - "ES_JAVA_OPTS=-Xms512m -Xmx512m" 33 | ulimits: 34 | memlock: 35 | soft: -1 36 | hard: -1 37 | volumes: 38 | - ./data/data02:/usr/share/elasticsearch/data 39 | networks: 40 | - elastic 41 | es03: 42 | image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2 43 | container_name: es03 44 | environment: 45 | - node.name=es03 46 | - cluster.name=es-docker-cluster 47 | - discovery.seed_hosts=es01,es02 48 | - cluster.initial_master_nodes=es01,es02,es03 49 | - bootstrap.memory_lock=true 50 | - "ES_JAVA_OPTS=-Xms512m -Xmx512m" 51 | ulimits: 52 | memlock: 53 | soft: -1 54 | hard: -1 55 | volumes: 56 | - ./data/data03:/usr/share/elasticsearch/data 57 | networks: 58 | - elastic 59 | 60 | volumes: 61 | data01: 62 | driver: local 63 | data02: 64 | driver: local 65 | data03: 66 | driver: local 67 | 68 | networks: 69 | elastic: 70 | driver: bridge -------------------------------------------------------------------------------- /gitea/README.md: -------------------------------------------------------------------------------- 1 | #### gitea -------------------------------------------------------------------------------- /gitea/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /gitea/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | gitea: 5 | container_name: gitea 6 | image: "gitea/gitea:latest" 7 | ports: 8 | - "9300:3000" 9 | - "9022:22" 10 | restart: always 11 | volumes: 12 | - ./data:/data -------------------------------------------------------------------------------- /gitlab/README.md: -------------------------------------------------------------------------------- 1 | #### gitlab 2 | -------------------------------------------------------------------------------- /gitlab/data/config/gitlab-runner/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /gitlab/data/config/gitlab/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /gitlab/data/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /gitlab/data/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /gitlab/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | gitlab-ce-web: 5 | image: "gitlab/gitlab-ce:latest" 6 | restart: always 7 | hostname: "192.168.224.1" 8 | environment: 9 | GITLAB_OMNIBUS_CONFIG: | 10 | external_url "http://192.168.224.1:8088" 11 | # Add any other gitlab.rb configuration here, each on its own line 12 | ports: 13 | - "8088:8088" 14 | - "8443:443" 15 | - "822:22" 16 | volumes: 17 | - ./data/config/gitlab:/etc/gitlab 18 | - ./data/logs:/var/log/gitlab 19 | - ./data/data:/var/opt/gitlab 20 | 21 | gitlab-runner: 22 | image: "gitlab/gitlab-runner:latest" 23 | restart: always 24 | volumes: 25 | - /var/run/docker.sock:/var/run/docker.sock 26 | - ./data/config/gitlab-runner:/etc/gitlab-runner -------------------------------------------------------------------------------- /gogs/README.md: -------------------------------------------------------------------------------- 1 | #### gogs 2 | -------------------------------------------------------------------------------- /gogs/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /gogs/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | gogs: 5 | container_name: gogs 6 | image: "gogs/gogs:latest" 7 | ports: 8 | - "9300:3000" 9 | - "9022:22" 10 | restart: always 11 | volumes: 12 | - ./data:/data -------------------------------------------------------------------------------- /harbor/README.md: -------------------------------------------------------------------------------- 1 | #### harbor 2 | -------------------------------------------------------------------------------- /harbor/data/chartmuseum_data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/config/core/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/config/jobservice/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/config/proxy/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/config/registry/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/config/registryctl/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/core_data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/jobservice_data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/postgresql_data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/data/registry_data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /harbor/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2" 2 | 3 | services: 4 | registry: 5 | image: docker.io/bitnami/harbor-registry:2 6 | environment: 7 | - REGISTRY_HTTP_SECRET=CHANGE_ME 8 | volumes: 9 | - ./data/registry_data:/storage 10 | - ./data/config/registry/:/etc/registry/:ro 11 | registryctl: 12 | image: docker.io/bitnami/harbor-registryctl:2 13 | environment: 14 | - CORE_SECRET=CHANGE_ME 15 | - JOBSERVICE_SECRET=CHANGE_ME 16 | - REGISTRY_HTTP_SECRET=CHANGE_ME 17 | volumes: 18 | - ./data/registry_data:/storage 19 | - ./data/config/registry/:/etc/registry/:ro 20 | - ./data/config/registryctl/config.yml:/etc/registryctl/config.yml:ro 21 | postgresql: 22 | image: docker.io/bitnami/postgresql:11 23 | container_name: harbor-db 24 | environment: 25 | - POSTGRESQL_PASSWORD=bitnami 26 | - POSTGRESQL_DATABASE=registry 27 | volumes: 28 | - ./data/postgresql_data:/bitnami/postgresql 29 | core: 30 | image: docker.io/bitnami/harbor-core:2 31 | container_name: harbor-core 32 | depends_on: 33 | - registry 34 | - chartmuseum 35 | environment: 36 | - CORE_KEY=change-this-key 37 | - _REDIS_URL=redis:6379,100, 38 | - SYNC_REGISTRY=false 39 | - CHART_CACHE_DRIVER=redis 40 | - _REDIS_URL_REG=redis://redis:6379/1 41 | - PORT=8080 42 | - LOG_LEVEL=info 43 | - EXT_ENDPOINT=http://192.168.224.113 44 | - DATABASE_TYPE=postgresql 45 | - REGISTRY_CONTROLLER_URL=http://registryctl:8080 46 | - POSTGRESQL_HOST=postgresql 47 | - POSTGRESQL_PORT=5432 48 | - POSTGRESQL_DATABASE=registry 49 | - POSTGRESQL_USERNAME=postgres 50 | - POSTGRESQL_PASSWORD=bitnami 51 | - POSTGRESQL_SSLMODE=disable 52 | - REGISTRY_URL=http://registry:5000 53 | - TOKEN_SERVICE_URL=http://core:8080/service/token 54 | - HARBOR_ADMIN_PASSWORD=bitnami 55 | - CORE_SECRET=CHANGE_ME 56 | - JOBSERVICE_SECRET=CHANGE_ME 57 | - ADMIRAL_URL= 58 | - WITH_NOTARY=False 59 | - WITH_CHARTMUSEUM=True 60 | - CHART_REPOSITORY_URL=http://chartmuseum:8080 61 | - CORE_URL=http://core:8080 62 | - JOBSERVICE_URL=http://jobservice:8080 63 | - REGISTRY_STORAGE_PROVIDER_NAME=filesystem 64 | - REGISTRY_CREDENTIAL_USERNAME=harbor_registry_user 65 | - REGISTRY_CREDENTIAL_PASSWORD=harbor_registry_password 66 | - READ_ONLY=false 67 | - RELOAD_KEY= 68 | volumes: 69 | - ./data/core_data:/data 70 | - ./data/config/core/app.conf:/etc/core/app.conf:ro 71 | - ./data/config/core/private_key.pem:/etc/core/private_key.pem:ro 72 | portal: 73 | image: docker.io/bitnami/harbor-portal:2 74 | container_name: harbor-portal 75 | depends_on: 76 | - core 77 | jobservice: 78 | image: docker.io/bitnami/harbor-jobservice:2 79 | container_name: harbor-jobservice 80 | depends_on: 81 | - redis 82 | - core 83 | environment: 84 | - CORE_SECRET=CHANGE_ME 85 | - JOBSERVICE_SECRET=CHANGE_ME 86 | - CORE_URL=http://core:8080 87 | - REGISTRY_CONTROLLER_URL=http://registryctl:8080 88 | - REGISTRY_CREDENTIAL_USERNAME=harbor_registry_user 89 | - REGISTRY_CREDENTIAL_PASSWORD=harbor_registry_password 90 | volumes: 91 | - ./data/jobservice_data:/var/log/jobs 92 | - ./data/config/jobservice/config.yml:/etc/jobservice/config.yml:ro 93 | redis: 94 | image: docker.io/bitnami/redis:6.0 95 | environment: 96 | # ALLOW_EMPTY_PASSWORD is recommended only for development. 97 | - ALLOW_EMPTY_PASSWORD=yes 98 | harbor-nginx: 99 | image: docker.io/bitnami/nginx:1.21 100 | container_name: nginx 101 | volumes: 102 | - ./data/config/proxy/nginx.conf:/opt/bitnami/nginx/conf/nginx.conf:ro 103 | ports: 104 | - "80:8080" 105 | depends_on: 106 | - postgresql 107 | - registry 108 | - core 109 | - portal 110 | chartmuseum: 111 | container_name: chartmuseum 112 | image: docker.io/bitnami/chartmuseum:0 113 | environment: 114 | - CACHE=redis 115 | - CACHE_REDIS_ADDR=redis:6379 116 | - CACHE_REDIS_DB=1 117 | - DEPTH=1 118 | - PORT=8080 119 | - STORAGE=local 120 | - STORAGE_LOCAL_ROOTDIR=/bitnami/data 121 | - ALLOW_OVERWRITE=true 122 | - INDEX_LIMIT=0 123 | volumes: 124 | - ./data/chartmuseum_data:/bitnami/data -------------------------------------------------------------------------------- /kafka/README.md: -------------------------------------------------------------------------------- 1 | #### kafka 2 | -------------------------------------------------------------------------------- /kafka/data/kafka/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /kafka/data/zookeeper/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /kafka/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | kafka: 5 | image: "bitnami/kafka:latest" 6 | environment: 7 | - KAFKA_BROKER_ID=1 8 | - KAFKA_LISTENERS=PLAINTEXT://:9092 9 | - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 10 | - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 11 | - ALLOW_PLAINTEXT_LISTENER=yes 12 | - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true 13 | ports: 14 | - "9092:9092" 15 | volumes: 16 | - ./data/kafka:/bitnami/kafka 17 | 18 | zookeeper: 19 | image: "bitnami/zookeeper:latest" 20 | environment: 21 | - ALLOW_ANONYMOUS_LOGIN=yes 22 | - ZOO_ENABLE_AUTH=no 23 | - ZOO_RECONFIG_ENABLED=yes 24 | ports: 25 | - "2181:2181" 26 | volumes: 27 | - ./data/zookeeper:/bitnami/zookeeper -------------------------------------------------------------------------------- /minio/README.md: -------------------------------------------------------------------------------- 1 | #### minio 2 | -------------------------------------------------------------------------------- /minio/data/config/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /minio/data/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /minio/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | minio: 5 | image: "minio/minio" 6 | container_name: minio 7 | network_mode: "host" 8 | volumes: 9 | - ./data/data:/data 10 | - ./data/config:/root/.minio 11 | command: server /data --console-address ":9001" 12 | environment: 13 | - MINIO_ROOT_USER=CHANGE_ME 14 | - MINIO_ROOT_PASSWORD=CHANGE_ME 15 | ports: 16 | - "9000:9000" 17 | - "9001:9001" 18 | restart: always -------------------------------------------------------------------------------- /mysql/README.md: -------------------------------------------------------------------------------- 1 | # mysql 2 | 3 | #### 简介 4 | 这是mysql的配置,镜像使用官方镜像,版本`8.0.23`。 5 | 6 | #### 注意事项 7 | - command解释 8 | 在command配置项中执行了一些指令,它们的作用分别是: 9 | - lower-case-table-names 10 | 指定对表名不区分大小写 11 | - sql-mode 12 | 设定sql模式,这里将模式设置为空,如果有一些特殊需求,可以在这个配置上加,例如`ONLY_FULL_GROUP_BY` 13 | - default-time-zone 14 | 设定默认时区为`UTC+8` 15 | - innodb_buffer_pool_size 16 | 设定innodb缓冲池的内存大小,具体数值可按需修改 17 | - max_allowed_packet 18 | 设定mysql接受的数据包大小 19 | - bulk_insert_buffer_size 20 | 设定批量插入数据时,一次写入磁盘数据量的大小 21 | - local_infile 22 | 允许在命令行使用`load data`来导入文件 23 | - binlog_expire_logs_seconds 24 | 设定binlog日志过期时间 25 | - skip-name-resolve 26 | 设定跳过DNS检查 27 | - custom.cnf 28 | 如果还有其他额外的自定义配置,可以加到custom.cnf文件中,文件`config/custom.cnf`提供了一个范例。 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /mysql/data/config/custom.cnf: -------------------------------------------------------------------------------- 1 | [mysqld] 2 | slow_query_log=on 3 | long_query_time=3 4 | #log_queries_not_using_indexes=on 5 | max_connections=1000 -------------------------------------------------------------------------------- /mysql/data/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /mysql/data/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /mysql/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | mysql-server: 5 | container_name: mysql-server-8 6 | image: "mysql:8.0.23" 7 | command: > 8 | mysqld --lower-case-table-names=1 --sql-mode="" --default-time-zone="+08:00" --innodb_buffer_pool_size=1073741824 --max_allowed_packet=134217728 --bulk_insert_buffer_size=536870912 --local_infile="on" --binlog_expire_logs_seconds=604800 --skip-name-resolve 9 | environment: 10 | - MYSQL_ROOT_PASSWORD=CHANGE_ME 11 | - MYSQL_DATABASE=default 12 | ports: 13 | - "33060:3306" 14 | restart: always 15 | volumes: 16 | - ./data/data/mysql:/var/lib/mysql:delegated 17 | - ./data/config/mysql:/etc/mysql/conf.d:delegated 18 | - ./data/logs/mysql:/var/log/mysql:delegated -------------------------------------------------------------------------------- /nacos/README.md: -------------------------------------------------------------------------------- 1 | #### nacos 2 | -------------------------------------------------------------------------------- /nacos/cluster/README.md: -------------------------------------------------------------------------------- 1 | # nacos集群 2 | 3 | #### 简介 4 | 这是nacos集群的配置。 5 | 6 | #### 注意事项 7 | - 端口 8 | 尽量不要修改配置文件中的端口,除`8848`端口外的另外两组端口映射是供nacos内部通信使用的,请务必确保网络连通性。 9 | 10 | - 数据库配置 11 | 数据库的配置建议只修改连接信息和库名称,其余保持不变。 12 | 13 | - 页面访问 14 | 以配置文件内容为例,nacos的web页面访问地址为`10.9.10.105:8848`,在访问页面的时候需要自己额外加上路径后缀, 15 | 否则可能不会正常显示页面,访问地址:`10.9.10.105:8848/nacos`。 16 | 17 | - 数据导入 18 | 在启动前请确保数据库名正确且已经被成功创建,其次,需要将`nacos_cluster-for-2.0.3.sql`文件导入到数据库中。 19 | 20 | #### 其他 21 | 其余进阶的配置,请参见[官方文档](https://nacos.io/)。 -------------------------------------------------------------------------------- /nacos/cluster/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | nacos1: 5 | image: nacos/nacos-server 6 | container_name: nacos1 7 | network_mode: "host" 8 | volumes: 9 | - ./logs/nacos:/home/nacos/logs 10 | - ./data/nacos:/home/nacos/data 11 | ports: 12 | - "8848:8848" 13 | - "9848:9848" 14 | - "9555:9555" 15 | environment: 16 | - NACOS_SERVERS=10.9.10.105:8848 10.9.10.17:8848 17 | - SPRING_DATASOURCE_PLATFORM=mysql 18 | - MYSQL_SERVICE_HOST=10.9.10.105 19 | - MYSQL_SERVICE_DB_NAME=nacos_cluster 20 | - MYSQL_SERVICE_PORT=33061 21 | - MYSQL_SERVICE_USER=root 22 | - MYSQL_SERVICE_PASSWORD=fake 23 | - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=20000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC 24 | restart: always 25 | 26 | # another machine... 27 | nacos2: 28 | image: nacos/nacos-server 29 | container_name: nacos2 30 | network_mode: "host" 31 | volumes: 32 | - ./logs/nacos:/home/nacos/logs 33 | - ./data/nacos:/home/nacos/data 34 | ports: 35 | - "8848:8848" 36 | - "9848:9848" 37 | environment: 38 | - NACOS_SERVERS=10.9.10.105:8848 10.9.10.17:8848 39 | - SPRING_DATASOURCE_PLATFORM=mysql 40 | - MYSQL_SERVICE_HOST=10.9.10.105 41 | - MYSQL_SERVICE_DB_NAME=nacos_cluster 42 | - MYSQL_SERVICE_PORT=33061 43 | - MYSQL_SERVICE_USER=root 44 | - MYSQL_SERVICE_PASSWORD=fake 45 | - MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=20000&socketTimeout=30000&autoReconnect=true&useSSL=false&serverTimezone=UTC 46 | restart: always -------------------------------------------------------------------------------- /nacos/cluster/nacos_cluster-for-2.0.3.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Navicat Premium Data Transfer 3 | 4 | Source Server : 192.168.224.68_3306 5 | Source Server Type : MySQL 6 | Source Server Version : 80023 7 | Source Host : 192.168.224.68:3306 8 | Source Schema : nacos_cluster 9 | 10 | Target Server Type : MySQL 11 | Target Server Version : 80023 12 | File Encoding : 65001 13 | 14 | Date: 25/03/2022 11:09:33 15 | */ 16 | 17 | SET NAMES utf8mb4; 18 | SET FOREIGN_KEY_CHECKS = 0; 19 | 20 | -- ---------------------------- 21 | -- Table structure for config_info 22 | -- ---------------------------- 23 | DROP TABLE IF EXISTS `config_info`; 24 | CREATE TABLE `config_info` ( 25 | `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id', 26 | `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', 27 | `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 28 | `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', 29 | `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', 30 | `gmt_create` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', 31 | `gmt_modified` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', 32 | `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', 33 | `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', 34 | `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 35 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', 36 | `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 37 | `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 38 | `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 39 | `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 40 | `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL, 41 | PRIMARY KEY (`id`) USING BTREE, 42 | UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE 43 | ) ENGINE = InnoDB AUTO_INCREMENT = 385 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic; 44 | 45 | -- ---------------------------- 46 | -- Records of config_info 47 | -- ---------------------------- 48 | 49 | -- ---------------------------- 50 | -- Table structure for config_info_aggr 51 | -- ---------------------------- 52 | DROP TABLE IF EXISTS `config_info_aggr`; 53 | CREATE TABLE `config_info_aggr` ( 54 | `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id', 55 | `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', 56 | `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', 57 | `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id', 58 | `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容', 59 | `gmt_modified` datetime(0) NOT NULL COMMENT '修改时间', 60 | `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 61 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', 62 | PRIMARY KEY (`id`) USING BTREE, 63 | UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE 64 | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic; 65 | 66 | -- ---------------------------- 67 | -- Records of config_info_aggr 68 | -- ---------------------------- 69 | 70 | -- ---------------------------- 71 | -- Table structure for config_info_beta 72 | -- ---------------------------- 73 | DROP TABLE IF EXISTS `config_info_beta`; 74 | CREATE TABLE `config_info_beta` ( 75 | `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id', 76 | `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', 77 | `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', 78 | `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', 79 | `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', 80 | `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps', 81 | `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', 82 | `gmt_create` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', 83 | `gmt_modified` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', 84 | `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', 85 | `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', 86 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', 87 | PRIMARY KEY (`id`) USING BTREE, 88 | UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE 89 | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic; 90 | 91 | -- ---------------------------- 92 | -- Records of config_info_beta 93 | -- ---------------------------- 94 | 95 | -- ---------------------------- 96 | -- Table structure for config_info_tag 97 | -- ---------------------------- 98 | DROP TABLE IF EXISTS `config_info_tag`; 99 | CREATE TABLE `config_info_tag` ( 100 | `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id', 101 | `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', 102 | `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', 103 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', 104 | `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id', 105 | `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', 106 | `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content', 107 | `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5', 108 | `gmt_create` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', 109 | `gmt_modified` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', 110 | `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user', 111 | `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip', 112 | PRIMARY KEY (`id`) USING BTREE, 113 | UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE 114 | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic; 115 | 116 | -- ---------------------------- 117 | -- Records of config_info_tag 118 | -- ---------------------------- 119 | 120 | -- ---------------------------- 121 | -- Table structure for config_tags_relation 122 | -- ---------------------------- 123 | DROP TABLE IF EXISTS `config_tags_relation`; 124 | CREATE TABLE `config_tags_relation` ( 125 | `id` bigint(0) NOT NULL COMMENT 'id', 126 | `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name', 127 | `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type', 128 | `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id', 129 | `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id', 130 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', 131 | `nid` bigint(0) NOT NULL AUTO_INCREMENT, 132 | PRIMARY KEY (`nid`) USING BTREE, 133 | UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE, 134 | INDEX `idx_tenant_id`(`tenant_id`) USING BTREE 135 | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic; 136 | 137 | -- ---------------------------- 138 | -- Records of config_tags_relation 139 | -- ---------------------------- 140 | 141 | -- ---------------------------- 142 | -- Table structure for group_capacity 143 | -- ---------------------------- 144 | DROP TABLE IF EXISTS `group_capacity`; 145 | CREATE TABLE `group_capacity` ( 146 | `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', 147 | `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', 148 | `quota` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值', 149 | `usage` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量', 150 | `max_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', 151 | `max_aggr_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值', 152 | `max_aggr_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', 153 | `max_history_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量', 154 | `gmt_create` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', 155 | `gmt_modified` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', 156 | PRIMARY KEY (`id`) USING BTREE, 157 | UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE 158 | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic; 159 | 160 | -- ---------------------------- 161 | -- Records of group_capacity 162 | -- ---------------------------- 163 | 164 | -- ---------------------------- 165 | -- Table structure for his_config_info 166 | -- ---------------------------- 167 | DROP TABLE IF EXISTS `his_config_info`; 168 | CREATE TABLE `his_config_info` ( 169 | `id` bigint(0) UNSIGNED NOT NULL, 170 | `nid` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT, 171 | `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 172 | `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 173 | `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name', 174 | `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, 175 | `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 176 | `gmt_create` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00', 177 | `gmt_modified` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00', 178 | `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL, 179 | `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 180 | `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL, 181 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段', 182 | PRIMARY KEY (`nid`) USING BTREE, 183 | INDEX `idx_gmt_create`(`gmt_create`) USING BTREE, 184 | INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE, 185 | INDEX `idx_did`(`data_id`) USING BTREE 186 | ) ENGINE = InnoDB AUTO_INCREMENT = 437 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic; 187 | 188 | -- ---------------------------- 189 | -- Records of his_config_info 190 | -- ---------------------------- 191 | 192 | -- ---------------------------- 193 | -- Table structure for permissions 194 | -- ---------------------------- 195 | DROP TABLE IF EXISTS `permissions`; 196 | CREATE TABLE `permissions` ( 197 | `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 198 | `resource` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 199 | `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 200 | UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE 201 | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; 202 | 203 | -- ---------------------------- 204 | -- Records of permissions 205 | -- ---------------------------- 206 | 207 | -- ---------------------------- 208 | -- Table structure for roles 209 | -- ---------------------------- 210 | DROP TABLE IF EXISTS `roles`; 211 | CREATE TABLE `roles` ( 212 | `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 213 | `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 214 | UNIQUE INDEX `uk_username_role`(`username`, `role`) USING BTREE 215 | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; 216 | 217 | -- ---------------------------- 218 | -- Records of roles 219 | -- ---------------------------- 220 | INSERT INTO `roles` VALUES ('nacos', 'ROLE_ADMIN'); 221 | 222 | -- ---------------------------- 223 | -- Table structure for tenant_capacity 224 | -- ---------------------------- 225 | DROP TABLE IF EXISTS `tenant_capacity`; 226 | CREATE TABLE `tenant_capacity` ( 227 | `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', 228 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID', 229 | `quota` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值', 230 | `usage` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量', 231 | `max_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', 232 | `max_aggr_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数', 233 | `max_aggr_size` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', 234 | `max_history_count` int(0) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量', 235 | `gmt_create` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间', 236 | `gmt_modified` datetime(0) NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间', 237 | PRIMARY KEY (`id`) USING BTREE, 238 | UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE 239 | ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic; 240 | 241 | -- ---------------------------- 242 | -- Records of tenant_capacity 243 | -- ---------------------------- 244 | 245 | -- ---------------------------- 246 | -- Table structure for tenant_info 247 | -- ---------------------------- 248 | DROP TABLE IF EXISTS `tenant_info`; 249 | CREATE TABLE `tenant_info` ( 250 | `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT 'id', 251 | `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp', 252 | `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id', 253 | `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name', 254 | `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc', 255 | `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source', 256 | `gmt_create` bigint(0) NOT NULL COMMENT '创建时间', 257 | `gmt_modified` bigint(0) NOT NULL COMMENT '修改时间', 258 | PRIMARY KEY (`id`) USING BTREE, 259 | UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE, 260 | INDEX `idx_tenant_id`(`tenant_id`) USING BTREE 261 | ) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic; 262 | 263 | -- ---------------------------- 264 | -- Records of tenant_info 265 | -- ---------------------------- 266 | INSERT INTO `tenant_info` VALUES (7, '1', 'e2f39a80-0b88-408c-96a9-d11a714a1bd2', 'release', 'release', 'nacos', 1640594214865, 1640594214865); 267 | 268 | -- ---------------------------- 269 | -- Table structure for users 270 | -- ---------------------------- 271 | DROP TABLE IF EXISTS `users`; 272 | CREATE TABLE `users` ( 273 | `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 274 | `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 275 | `enabled` tinyint(1) NOT NULL, 276 | PRIMARY KEY (`username`) USING BTREE 277 | ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic; 278 | 279 | -- ---------------------------- 280 | -- Records of users 281 | -- ---------------------------- 282 | INSERT INTO `users` VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1); 283 | 284 | SET FOREIGN_KEY_CHECKS = 1; -------------------------------------------------------------------------------- /nacos/data/custom.properties/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /nacos/data/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /nacos/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | nacos: 5 | image: nacos/nacos-server 6 | container_name: nacos 7 | environment: 8 | # 单机模式启动 9 | - MODE=standalone 10 | # 保存策略:mysql/empty 11 | - SPRING_DATASOURCE_PLATFORM=mysql 12 | # 更改mysql配置 13 | - MYSQL_SERVICE_HOST=CHANGE_ME 14 | - MYSQL_SERVICE_DB_NAME=nacos_config 15 | - MYSQL_SERVICE_PORT=3306 16 | - MYSQL_SERVICE_USER=CHANGE_ME 17 | - MYSQL_SERVICE_PASSWORD=CHANGE_ME 18 | # 修改jvm参数 19 | - JVM_XMS=512m 20 | - JVM_XMX=512m 21 | - JVM_MS=64m 22 | - JVM_MMS=64m 23 | # 是否开启远程Debug 24 | - NACOS_DEBUG=no 25 | - TOMCAT_ACCESSLOG_ENABLED=false 26 | volumes: 27 | - ./data/nacos/logs/:/home/nacos/logs 28 | - ./data/nacos/custom.properties:/home/nacos/init.d/custom.properties 29 | ports: 30 | - "8848:8848" 31 | - "9849:9849" 32 | - "9848:9848" 33 | restart: always -------------------------------------------------------------------------------- /nats-jetstream/README.md: -------------------------------------------------------------------------------- 1 | [Docs](https://docs.nats.io/running-a-nats-service/nats_docker) -------------------------------------------------------------------------------- /nats-jetstream/conf/nats-1/cluster.conf: -------------------------------------------------------------------------------- 1 | server_name=n1-c0 2 | listen=4222 3 | 4 | #doc https://docs.nats.io/running-a-nats-service/configuration/securing_nats/authorization 5 | authorization { 6 | default_permissions = { 7 | publish = "SANDBOX.*" 8 | subscribe = ["PUBLIC.>", "_INBOX.>"] 9 | } 10 | ADMIN = { 11 | publish = ">" 12 | subscribe = ">" 13 | } 14 | REQUESTER = { 15 | publish = ["req.a", "req.b"] 16 | subscribe = "_INBOX.>" 17 | } 18 | RESPONDER = { 19 | subscribe = ["req.a", "req.b"] 20 | publish = "_INBOX.>" 21 | } 22 | users = [ 23 | {user: admin, password: $ADMIN_PASS, permissions: $ADMIN} 24 | {user: client, password: $CLIENT_PASS, permissions: $REQUESTER} 25 | {user: service, password: $SERVICE_PASS, permissions: $RESPONDER} 26 | {user: other, password: $OTHER_PASS} 27 | ] 28 | } 29 | 30 | jetstream: enabled 31 | jetstream { 32 | store_dir = /data 33 | max_mem = 1G 34 | max_file = 10G 35 | } 36 | 37 | cluster { 38 | name: c0 39 | listen: 0.0.0.0:6222 40 | routes: [ 41 | nats://nats-1:6222 42 | nats://nats-2:6222 43 | ] 44 | } -------------------------------------------------------------------------------- /nats-jetstream/conf/nats-2/cluster.conf: -------------------------------------------------------------------------------- 1 | server_name=n1-c1 2 | listen=4222 3 | 4 | #doc https://docs.nats.io/running-a-nats-service/configuration/securing_nats/authorization 5 | authorization { 6 | default_permissions = { 7 | publish = "SANDBOX.*" 8 | subscribe = ["PUBLIC.>", "_INBOX.>"] 9 | } 10 | ADMIN = { 11 | publish = ">" 12 | subscribe = ">" 13 | } 14 | REQUESTER = { 15 | publish = ["req.a", "req.b"] 16 | subscribe = "_INBOX.>" 17 | } 18 | RESPONDER = { 19 | subscribe = ["req.a", "req.b"] 20 | publish = "_INBOX.>" 21 | } 22 | users = [ 23 | {user: admin, password: $ADMIN_PASS, permissions: $ADMIN} 24 | {user: client, password: $CLIENT_PASS, permissions: $REQUESTER} 25 | {user: service, password: $SERVICE_PASS, permissions: $RESPONDER} 26 | {user: other, password: $OTHER_PASS} 27 | ] 28 | } 29 | 30 | jetstream: enabled 31 | jetstream { 32 | store_dir = /data 33 | max_mem = 1G 34 | max_file = 10G 35 | } 36 | 37 | cluster { 38 | name: c1 39 | listen: 0.0.0.0:6222 40 | routes: [ 41 | nats://nats-1:6222 42 | nats://nats-2:6222 43 | ] 44 | } -------------------------------------------------------------------------------- /nats-jetstream/conf/nats-3/cluster.conf: -------------------------------------------------------------------------------- 1 | server_name=n1-c2 2 | listen=4222 3 | 4 | #doc https://docs.nats.io/running-a-nats-service/configuration/securing_nats/authorization 5 | authorization { 6 | default_permissions = { 7 | publish = "SANDBOX.*" 8 | subscribe = ["PUBLIC.>", "_INBOX.>"] 9 | } 10 | ADMIN = { 11 | publish = ">" 12 | subscribe = ">" 13 | } 14 | REQUESTER = { 15 | publish = ["req.a", "req.b"] 16 | subscribe = "_INBOX.>" 17 | } 18 | RESPONDER = { 19 | subscribe = ["req.a", "req.b"] 20 | publish = "_INBOX.>" 21 | } 22 | users = [ 23 | {user: admin, password: $ADMIN_PASS, permissions: $ADMIN} 24 | {user: client, password: $CLIENT_PASS, permissions: $REQUESTER} 25 | {user: service, password: $SERVICE_PASS, permissions: $RESPONDER} 26 | {user: other, password: $OTHER_PASS} 27 | ] 28 | } 29 | 30 | jetstream: enabled 31 | jetstream { 32 | store_dir = /data 33 | max_mem = 1G 34 | max_file = 10G 35 | } 36 | 37 | cluster { 38 | name: c2 39 | listen: 0.0.0.0:6222 40 | routes: [ 41 | nats://nats-1:6222 42 | nats://nats-2:6222 43 | ] 44 | } -------------------------------------------------------------------------------- /nats-jetstream/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /nats-jetstream/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.5" 2 | services: 3 | nats: 4 | image: nats:2.9.17 5 | ports: 6 | - "8222:8222" 7 | - "4222:4222" 8 | command: "--cluster_name NATS --config /conf/cluster.conf --http_port 8222" 9 | networks: ["nats"] 10 | volumes: 11 | - ./data/nats-1:/data 12 | - ./conf/nats-1:/conf 13 | environment: 14 | - ADMIN_PASS=changeMe 15 | - CLIENT_PASS=changeMe 16 | - SERVICE_PASS=changeMe 17 | - OTHER_PASS=changeMe 18 | nats-1: 19 | image: nats:2.9.17 20 | ports: 21 | - "4223:4222" 22 | command: "--cluster_name NATS --config /conf/cluster.conf" 23 | networks: ["nats"] 24 | volumes: 25 | - ./data/nats-2:/data 26 | - ./conf/nats-2:/conf 27 | environment: 28 | - ADMIN_PASS=changeMe 29 | - CLIENT_PASS=changeMe 30 | - SERVICE_PASS=changeMe 31 | - OTHER_PASS=changeMe 32 | depends_on: ["nats"] 33 | nats-2: 34 | image: nats:2.9.17 35 | ports: 36 | - "4224:4222" 37 | command: "--cluster_name NATS --config /conf/cluster.conf" 38 | networks: ["nats"] 39 | volumes: 40 | - ./data/nats-3:/data 41 | - ./conf/nats-3:/conf 42 | environment: 43 | - ADMIN_PASS=changeMe 44 | - CLIENT_PASS=changeMe 45 | - SERVICE_PASS=changeMe 46 | - OTHER_PASS=changeMe 47 | depends_on: ["nats"] 48 | 49 | networks: 50 | nats: 51 | name: nats -------------------------------------------------------------------------------- /nexus/README.md: -------------------------------------------------------------------------------- 1 | #### nexus 2 | -------------------------------------------------------------------------------- /nexus/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /nexus/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | nexus: 5 | image: sonatype/nexus3 6 | container_name: nexus 7 | ports: 8 | - "8081:8081" 9 | volumes: 10 | - ./data/nexus-data 11 | restart: always -------------------------------------------------------------------------------- /postgres/README.md: -------------------------------------------------------------------------------- 1 | #### postgres 2 | -------------------------------------------------------------------------------- /postgres/data/postgres/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /postgres/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | postgres: 5 | image: postgres:12 6 | environment: 7 | - POSTGRES_USER=CHANGE_ME 8 | - POSTGRES_PASSWORD=CHANGE_ME 9 | - POSTGRES_DB=default 10 | volumes: 11 | - ./data/postgres:/var/lib/postgresql/data 12 | ports: 13 | - "5432:5432" -------------------------------------------------------------------------------- /prometheus-stack/README.md: -------------------------------------------------------------------------------- 1 | #### Prometheus docker-compose 2 | 3 | #### 项目结构 4 | 5 | ``` 6 | ├── README.md 7 | ├── alertmanager 8 | │ └── alertmanager.yml 9 | ├── blackbox-exporter 10 | │ └── blackbox.yml 11 | ├── dingtalk-webhook 12 | │ ├── config.yml 13 | │ └── templates 14 | ├── docker-compose.yml 15 | └── prometheus 16 | └── prometheus.yml 17 | ``` 18 | 19 | #### 主要组件 20 | 21 | - **Prometheus**: 用于收集和存储监控数据; 22 | - **Node Exporter**: 用于收集主机级别的系统指标(如 CPU、内存、磁盘等); 23 | - 注:node-exporter可能存在操作系统兼容性,推荐使用Linux作为运行环境; 24 | - **Blackbox Exporter**: 用于探测网络服务的可用性(如 HTTP、TCP、ICMP 等); 25 | - **Alertmanager**: 用于管理告警,支持去重、分组、静默等功能; 26 | - **DingTalk Webhook**: 用于将告警信息推送到钉钉群组; 27 | - **Grafana**: 用于可视化展示监控数据; 28 | 29 | #### 快速开始 30 | 31 | 1. 环境准备 32 | - Docker 33 | - Docker Compose 34 | 2. 启动服务 35 | - 拷贝`prometheus-stack`文件夹到你需要持久化存储的路径; 36 | - 执行`docker-compose up -d`来自动拉取镜像和部署; 37 | 3. 访问服务: 38 | - Prometheus: [http://localhost:9090](http://localhost:9090/) 39 | - Alertmanager: [http://localhost:9093](http://localhost:9093/) 40 | - Grafana: [http://localhost:3000](http://localhost:3000/) 41 | - 默认用户名:`admin` 42 | - 默认密码:`admin` 43 | - Blackbox Exporter: [http://localhost:9115](http://localhost:9115/) 44 | - DingTalk Webhook: [http://localhost:8060](http://localhost:8060/) 45 | 46 | -------------------------------------------------------------------------------- /prometheus-stack/alertmanager/alertmanager.yml: -------------------------------------------------------------------------------- 1 | route: 2 | group_by: ['alertname'] 3 | group_wait: 30s 4 | group_interval: 5m 5 | repeat_interval: 1h 6 | receiver: 'web.hook' 7 | receivers: 8 | - name: 'web.hook' 9 | webhook_configs: 10 | - url: 'http://127.0.0.1:5001/' 11 | inhibit_rules: 12 | - source_match: 13 | severity: 'critical' 14 | target_match: 15 | severity: 'warning' 16 | equal: ['alertname', 'dev', 'instance'] 17 | -------------------------------------------------------------------------------- /prometheus-stack/blackbox-exporter/blackbox.yml: -------------------------------------------------------------------------------- 1 | modules: 2 | http_2xx: 3 | prober: http 4 | http: 5 | preferred_ip_protocol: "ip4" 6 | http_post_2xx: 7 | prober: http 8 | http: 9 | method: POST 10 | tcp_connect: 11 | prober: tcp 12 | pop3s_banner: 13 | prober: tcp 14 | tcp: 15 | query_response: 16 | - expect: "^+OK" 17 | tls: true 18 | tls_config: 19 | insecure_skip_verify: false 20 | grpc: 21 | prober: grpc 22 | grpc: 23 | tls: true 24 | preferred_ip_protocol: "ip4" 25 | grpc_plain: 26 | prober: grpc 27 | grpc: 28 | tls: false 29 | service: "service1" 30 | ssh_banner: 31 | prober: tcp 32 | tcp: 33 | query_response: 34 | - expect: "^SSH-2.0-" 35 | - send: "SSH-2.0-blackbox-ssh-check" 36 | irc_banner: 37 | prober: tcp 38 | tcp: 39 | query_response: 40 | - send: "NICK prober" 41 | - send: "USER prober prober prober :prober" 42 | - expect: "PING :([^ ]+)" 43 | send: "PONG ${1}" 44 | - expect: "^:[^ ]+ 001" 45 | icmp: 46 | prober: icmp 47 | icmp_ttl5: 48 | prober: icmp 49 | timeout: 5s 50 | icmp: 51 | ttl: 5 52 | -------------------------------------------------------------------------------- /prometheus-stack/dingtalk-webhook/config.yml: -------------------------------------------------------------------------------- 1 | ## Request timeout 2 | # timeout: 5s 3 | 4 | ## Uncomment following line in order to write template from scratch (be careful!) 5 | #no_builtin_template: true 6 | 7 | ## Customizable templates path 8 | #templates: 9 | # - contrib/templates/legacy/template.tmpl 10 | 11 | ## You can also override default template using `default_message` 12 | ## The following example to use the 'legacy' template from v0.3.0 13 | #default_message: 14 | # title: '{{ template "legacy.title" . }}' 15 | # text: '{{ template "legacy.content" . }}' 16 | 17 | ## Targets, previously was known as "profiles" 18 | targets: 19 | webhook1: 20 | url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx 21 | # secret for signature 22 | secret: SEC000000000000000000000 23 | webhook2: 24 | url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx 25 | webhook_legacy: 26 | url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx 27 | # Customize template content 28 | message: 29 | # Use legacy template 30 | title: '{{ template "legacy.title" . }}' 31 | text: '{{ template "legacy.content" . }}' 32 | webhook_mention_all: 33 | url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx 34 | mention: 35 | all: true 36 | webhook_mention_users: 37 | url: https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxx 38 | mention: 39 | mobiles: ['156xxxx8827', '189xxxx8325'] 40 | -------------------------------------------------------------------------------- /prometheus-stack/docker-compose.yml: -------------------------------------------------------------------------------- 1 | networks: 2 | monitor: 3 | name: monitor 4 | driver: bridge 5 | 6 | services: 7 | prometheus: 8 | image: prom/prometheus:latest 9 | ports: 10 | - 9090:9090 11 | restart: unless-stopped 12 | volumes: 13 | - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml 14 | - ./prometheus/:/etc/prometheus 15 | networks: 16 | - monitor 17 | container_name: prometheus 18 | environment: 19 | - --web.enable-admin-api 20 | - --web.enable-lifecycle 21 | 22 | node-exporter: 23 | image: quay.io/prometheus/node-exporter:latest 24 | container_name: node-exporter 25 | restart: unless-stopped 26 | network_mode: host 27 | pid: host 28 | volumes: 29 | - /:/host:ro,rslave 30 | command: --path.rootfs=/host 31 | depends_on: 32 | - prometheus 33 | 34 | blackbox-exporter: 35 | image: quay.io/prometheus/blackbox-exporter:latest 36 | container_name: blackbox-exporter 37 | restart: unless-stopped 38 | ports: 39 | - "9115:9115" 40 | volumes: 41 | - ./blackbox-exporter/:/config 42 | command: --config.file=/config/blackbox.yml 43 | depends_on: 44 | - prometheus 45 | 46 | alertmanager: 47 | image: prom/alertmanager:latest 48 | container_name: alertmanager 49 | restart: unless-stopped 50 | volumes: 51 | - ./alertmanager/alertmanager.yml:/etc/alertmanager/alertmanager.yml 52 | ports: 53 | - "9093:9093" 54 | networks: 55 | - monitor 56 | 57 | dingtalk-webhook: 58 | image: timonwong/prometheus-webhook-dingtalk:latest 59 | restart: unless-stopped 60 | volumes: 61 | - ./dingtalk-webhook/config.yml:/etc/prometheus-webhook-dingtalk/config.yml 62 | - ./dingtalk-webhook/templates:/etc/prometheus-webhook-dingtalk/templates 63 | ports: 64 | - 8060:8060 65 | command: ["--config.file=/etc/prometheus-webhook-dingtalk/config.yml", "--web.enable-ui", "--web.enable-lifecycle"] 66 | networks: 67 | - monitor 68 | container_name: dingtalk-webhook 69 | depends_on: 70 | - prometheus 71 | - node-exporter 72 | - blackbox-exporter 73 | 74 | grafana: 75 | image: grafana/grafana-enterprise 76 | user: root 77 | restart: unless-stopped 78 | ports: 79 | - 3000:3000 80 | networks: 81 | - monitor 82 | volumes: 83 | - ./grafana/data:/var/lib/grafana 84 | container_name: grafana 85 | depends_on: 86 | - prometheus -------------------------------------------------------------------------------- /prometheus-stack/prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | # my global config 2 | global: 3 | scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. 4 | evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. 5 | # scrape_timeout is set to the global default (10s). 6 | 7 | # Alertmanager configuration 8 | alerting: 9 | alertmanagers: 10 | - static_configs: 11 | - targets: 12 | # - alertmanager:9093 13 | 14 | # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. 15 | rule_files: 16 | # - "first_rules.yml" 17 | # - "second_rules.yml" 18 | 19 | # A scrape configuration containing exactly one endpoint to scrape: 20 | # Here it's Prometheus itself. 21 | scrape_configs: 22 | # The job name is added as a label `job=` to any timeseries scraped from this config. 23 | - job_name: "prometheus" 24 | 25 | # metrics_path defaults to '/metrics' 26 | # scheme defaults to 'http'. 27 | 28 | static_configs: 29 | - targets: ["localhost:9090"] 30 | -------------------------------------------------------------------------------- /pulsar/README.md: -------------------------------------------------------------------------------- 1 | #### Pulsar 2 | 3 | (Experimental) 4 | 5 | [Docs Reference](https://pulsar.apache.org/docs/en/standalone-docker/) -------------------------------------------------------------------------------- /pulsar/data/pulsarconf/.gitignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | !.gitignore -------------------------------------------------------------------------------- /pulsar/data/pulsardata/.gitignore: -------------------------------------------------------------------------------- 1 | .gitignore 2 | !.gitignore -------------------------------------------------------------------------------- /pulsar/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | pulsar: 5 | image: "apachepulsar/pulsar:2.9.1" 6 | container_name: pulsar 7 | volumes: 8 | - ./data/pulsardata:/pulsar/data 9 | - ./data/pulsarconf:/pulsar/conf 10 | ports: 11 | - "6650:6650" 12 | - "8080:8080" 13 | command: bin/pulsar standalone -------------------------------------------------------------------------------- /redis/README.md: -------------------------------------------------------------------------------- 1 | #### redis 2 | -------------------------------------------------------------------------------- /redis/cluster/README.md: -------------------------------------------------------------------------------- 1 | # redis cluster 2 | 3 | #### 简介 4 | redis集群,使用cluster模式。使用`bitnami`提供的镜像,版本为`6.2.6`。 5 | 6 | #### 注意事项 7 | - 替换ip地址 8 | 使用前需要将`192.168.94.13`全部替换为自己的机器ip,为了除本机以外的机器可以正常访问,请**务必使用宿主主机的ip地址**。 9 | 10 | > Windows可使用`ipconfig`指令查看本机地址,Linux或MacOS可以使用`ifconfig`指令查看本机地址。 11 | 部分Linux发型版如果没有`ifconfig`,也可以使用`ip addr`指令。 12 | 13 | - 修改认证密码 14 | 默认配置的认证密码为`fake`,账号为空字符。使用前请按需修改。 15 | 16 | - 确认网络连通性 17 | 请确保`6379`-`6384`以及`16379`-`16384`两个范围的端口均可访问。 18 | 19 | -------------------------------------------------------------------------------- /redis/cluster/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | redis-node1: 5 | image: "bitnami/redis-cluster:6.2.6" 6 | container_name: redis-node1 7 | environment: 8 | - REDIS_PORT_NUMBER=6379 9 | - REDIS_PASSWORD=fake 10 | - REDISCLI_AUTH=fake 11 | - REDIS_CLUSTER_CREATOR=no 12 | - REDIS_NODES=192.168.94.13:6379 192.168.94.13:6380 192.168.94.13:6381 192.168.94.13:6382 192.168.94.13:6383 192.168.94.13:6384 13 | - REDIS_CLUSTER_ANNOUNCE_IP=192.168.94.13 14 | - REDIS_CLUSTER_DYNAMIC_IPS=no 15 | volumes: 16 | - ./data/node1:/bitnami/redis/data 17 | ports: 18 | - "6379:6379" 19 | - "16379:16379" 20 | restart: always 21 | 22 | redis-node2: 23 | image: "bitnami/redis-cluster:6.2.6" 24 | container_name: redis-node2 25 | environment: 26 | - REDIS_PORT_NUMBER=6380 27 | - REDIS_PASSWORD=fake 28 | - REDISCLI_AUTH=fake 29 | - REDIS_CLUSTER_CREATOR=no 30 | - REDIS_NODES=192.168.94.13:6379 192.168.94.13:6380 192.168.94.13:6381 192.168.94.13:6382 192.168.94.13:6383 192.168.94.13:6384 31 | - REDIS_CLUSTER_ANNOUNCE_IP=192.168.94.13 32 | - REDIS_CLUSTER_DYNAMIC_IPS=no 33 | volumes: 34 | - ./data/node2:/bitnami/redis/data 35 | ports: 36 | - "6380:6380" 37 | - "16380:16380" 38 | restart: always 39 | 40 | redis-node3: 41 | image: "bitnami/redis-cluster:6.2.6" 42 | container_name: redis-node3 43 | environment: 44 | - REDIS_PORT_NUMBER=6381 45 | - REDIS_PASSWORD=fake 46 | - REDISCLI_AUTH=fake 47 | - REDIS_CLUSTER_CREATOR=no 48 | - REDIS_NODES=192.168.94.13:6379 192.168.94.13:6380 192.168.94.13:6381 192.168.94.13:6382 192.168.94.13:6383 192.168.94.13:6384 49 | - REDIS_CLUSTER_ANNOUNCE_IP=192.168.94.13 50 | - REDIS_CLUSTER_DYNAMIC_IPS=no 51 | volumes: 52 | - ./data/node3:/bitnami/redis/data 53 | ports: 54 | - "6381:6381" 55 | - "16381:16381" 56 | restart: always 57 | 58 | redis-node4: 59 | image: "bitnami/redis-cluster:6.2.6" 60 | container_name: redis-node4 61 | environment: 62 | - REDIS_PORT_NUMBER=6382 63 | - REDIS_PASSWORD=fake 64 | - REDISCLI_AUTH=fake 65 | - REDIS_CLUSTER_CREATOR=no 66 | - REDIS_NODES=192.168.94.13:6379 192.168.94.13:6380 192.168.94.13:6381 192.168.94.13:6382 192.168.94.13:6383 192.168.94.13:6384 67 | - REDIS_CLUSTER_ANNOUNCE_IP=192.168.94.13 68 | - REDIS_CLUSTER_DYNAMIC_IPS=no 69 | volumes: 70 | - ./data/node4:/bitnami/redis/data 71 | ports: 72 | - "6382:6382" 73 | - "16382:16382" 74 | restart: always 75 | 76 | redis-node5: 77 | image: "bitnami/redis-cluster:6.2.6" 78 | container_name: redis-node5 79 | environment: 80 | - REDIS_PORT_NUMBER=6383 81 | - REDIS_PASSWORD=fake 82 | - REDISCLI_AUTH=fake 83 | - REDIS_CLUSTER_CREATOR=no 84 | - REDIS_NODES=192.168.94.13:6379 192.168.94.13:6380 192.168.94.13:6381 192.168.94.13:6382 192.168.94.13:6383 192.168.94.13:6384 85 | - REDIS_CLUSTER_ANNOUNCE_IP=192.168.94.13 86 | - REDIS_CLUSTER_DYNAMIC_IPS=no 87 | volumes: 88 | - ./data/node5:/bitnami/redis/data 89 | ports: 90 | - "6383:6383" 91 | - "16383:16383" 92 | restart: always 93 | 94 | redis-node6: 95 | image: "bitnami/redis-cluster:6.2.6" 96 | container_name: redis-node6 97 | environment: 98 | - REDIS_PORT_NUMBER=6384 99 | - REDIS_PASSWORD=fake 100 | - REDISCLI_AUTH=fake 101 | - REDIS_CLUSTER_CREATOR=yes 102 | - REDIS_NODES=192.168.94.13:6379 192.168.94.13:6380 192.168.94.13:6381 192.168.94.13:6382 192.168.94.13:6383 192.168.94.13:6384 103 | - REDIS_CLUSTER_ANNOUNCE_IP=192.168.94.13 104 | - REDIS_CLUSTER_DYNAMIC_IPS=no 105 | volumes: 106 | - ./data/node6:/bitnami/redis/data 107 | ports: 108 | - "6384:6384" 109 | - "16384:16384" 110 | depends_on: 111 | - redis-node1 112 | - redis-node2 113 | - redis-node3 114 | - redis-node4 115 | - redis-node5 116 | restart: always 117 | 118 | # cli command 119 | # redis-cli --cluster create \ 120 | # 192.168.94.13:6379 \ 121 | # 192.168.94.13:6380 \ 122 | # 192.168.94.13:6381 \ 123 | # 192.168.94.13:6382 \ 124 | # 192.168.94.13:6383 \ 125 | # 192.168.94.13:6384 \ 126 | # --cluster-replicas 1 \ 127 | # --cluster-yes -a fake -------------------------------------------------------------------------------- /redis/data/config/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /redis/data/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /redis/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | redis: 5 | image: redis:alpine 6 | ports: 7 | - "6379:6379" 8 | volumes: 9 | - ./data/data:/data 10 | - ./data/config:/usr/local/etc/redis -------------------------------------------------------------------------------- /rocketmq/README.md: -------------------------------------------------------------------------------- 1 | #### rocketmq 2 | 3 | [Docs Reference](https://github.com/apache/rocketmq-docker) -------------------------------------------------------------------------------- /rocketmq/data/broker/conf/broker.conf: -------------------------------------------------------------------------------- 1 | brokerClusterName = DefaultCluster 2 | brokerName = broker-a 3 | brokerId = 0 4 | deleteWhen = 04 5 | fileReservedTime = 48 6 | brokerRole = ASYNC_MASTER 7 | flushDiskType = ASYNC_FLUSH 8 | #set `brokerIP1` if you want to set physical IP as broker IP. 9 | brokerIP1=10.10.101.80 #change you own physical IP Address -------------------------------------------------------------------------------- /rocketmq/data/broker/logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /rocketmq/data/broker/store/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /rocketmq/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | namesrv: 4 | image: apacherocketmq/rocketmq:4.5.0 5 | container_name: rmqnamesrv 6 | ports: 7 | - "9876:9876" 8 | volumes: 9 | - ./data/namesrv/logs:/home/rocketmq/logs 10 | command: sh mqnamesrv 11 | broker: 12 | image: apacherocketmq/rocketmq:4.5.0 13 | container_name: rmqbroker 14 | ports: 15 | - "10909:10909" 16 | - "10911:10911" 17 | - "10912:10912" 18 | volumes: 19 | - ./data/broker/logs:/home/rocketmq/logs 20 | - ./data/broker/store:/home/rocketmq/store 21 | - ./data/broker/conf/broker.conf:/home/rocketmq/rocketmq-4.5.0/conf/broker.conf 22 | command: sh mqbroker -n namesrv:9876 -c ../conf/broker.conf 23 | depends_on: 24 | - namesrv -------------------------------------------------------------------------------- /sonarqube/README.md: -------------------------------------------------------------------------------- 1 | #### sonarqube 2 | -------------------------------------------------------------------------------- /sonarqube/data/postgres/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /sonarqube/data/sonarqube_data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /sonarqube/data/sonarqube_extensions/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /sonarqube/data/sonarqube_logs/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /sonarqube/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.1" 2 | 3 | services: 4 | sonarqube: 5 | container_name: sonarqube 6 | image: "sonarqube:community" 7 | depends_on: 8 | - postgres 9 | environment: 10 | - SONAR_JDBC_URL=jdbc:postgresql://postgres:5432/sonar 11 | - SONAR_JDBC_USERNAME=sonar 12 | - SONAR_JDBC_PASSWORD=sonar 13 | volumes: 14 | - ./data/sonarqube_data:/opt/sonarqube/data 15 | - ./data/sonarqube_extensions:/opt/sonarqube/extensions 16 | - ./data/sonarqube_logs:/opt/sonarqube/logs 17 | ports: 18 | - "9090:9000" 19 | restart: always 20 | 21 | postgres: 22 | container_name: postgres 23 | image: postgres:12 24 | environment: 25 | - POSTGRES_USER=sonar 26 | - POSTGRES_PASSWORD=sonar 27 | - POSTGRES_DB=sonar 28 | volumes: 29 | - ./data/postgres:/var/lib/postgresql/data 30 | ports: 31 | - "5432:5432" -------------------------------------------------------------------------------- /svn-server/README.md: -------------------------------------------------------------------------------- 1 | #### svn-server 2 | 3 | - 配置 4 | > 参见docker-compose.yml 5 | 6 | ```yaml 7 | version: "3" 8 | 9 | services: 10 | svn-server: 11 | image: elleflorio/svn-server:latest 12 | ports: 13 | - "80:80" 14 | - "3690:3690" 15 | volumes: 16 | - ./data/svndata:/home/svn 17 | - ./data/config/subversion-access-control:/etc/subversion/subversion-access-control 18 | restart: always 19 | ``` 20 | 21 | #### 命令 22 | 23 | - 创建仓库 24 | ```shell 25 | docker exec -t $(docker ps -a|grep svn-server|awk '{print $1}') svnadmin create /home/svn/myrepo 26 | ``` 27 | 28 | 注意:创建仓库后,可能会遇到客户端访问提示没有权限的问题,如:`Can't open file '/home/svn/myrepo/db/txn-current-lock': Permission`, 29 | 此时需要更改存放目录的访问权限。根据上面的配置,可以知道需要更改`./data/svndata`目录的权限,因此执行命令: 30 | ```shell 31 | sudo chmod a+wxr -R ./data/svndata/myrepo 32 | ``` 33 | 34 | - web访问仓库 35 | ```text 36 | http://127.0.0.1/svn/myrepo 37 | ``` 38 | 39 | - 小乌龟(tortoise)访问地址 40 | ```text 41 | http://127.0.0.1/svn/myrepo 42 | ``` 43 | 44 | - 创建用户 45 | ```shell 46 | docker exec -t $(docker ps -a|grep svn-server|awk '{print $1}') htpasswd -b /etc/subversion/passwd username password 47 | ``` 48 | 49 | #### 其他问题 50 | - Error: Access to '/svn/Demo/!svn/me' forbidden when commit file [#19](https://github.com/elleFlorio/svn-docker/issues/19) -------------------------------------------------------------------------------- /svn-server/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !config 3 | !config/* 4 | !.gitignore -------------------------------------------------------------------------------- /svn-server/data/config/subversion-access-control: -------------------------------------------------------------------------------- 1 | [groups] 2 | 3 | [/] 4 | * = rw -------------------------------------------------------------------------------- /svn-server/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | 3 | services: 4 | svn-server: 5 | # @see https://hub.docker.com/r/elleflorio/svn-server 6 | # create user: 7 | # docker exec -t {container-id} htpasswd -b /etc/subversion/passwd 8 | # create repository: 9 | # docker exec -t {container-id} svnadmin create /home/svn/ 10 | image: elleflorio/svn-server:latest 11 | ports: 12 | - "80:80" 13 | - "3690:3690" 14 | volumes: 15 | - ./data/svndata:/home/svn 16 | - ./data/config/subversion-access-control:/etc/subversion/subversion-access-control 17 | restart: always 18 | -------------------------------------------------------------------------------- /valkey/cluster/README.md: -------------------------------------------------------------------------------- 1 | # Valkey - Cluster 2 | 3 | #### 介绍 4 | 此目录是Valkey组件的集群安装集成。 5 | 6 | #### 部署流程 7 | - 修改ip地址为你真实的地址 8 | 在此目录下全局搜索`192.168.100.19`并替换为你真实的ip地址。 9 | 10 | - 修改认证密码 11 | 在此目录下全局搜索`yourpassword`并替换为你真实的认证密码。 12 | 13 | - 启动容器 14 | ```shell 15 | docker compose up -d 16 | ``` 17 | 18 | - 执行自动化集群发现脚本 19 | ```shell 20 | sh create-cluster.sh 21 | ``` 22 | 23 | #### 其他 24 | - 端口监听范围 25 | - 6379~6384 26 | - 16379~16384 27 | - 镜像版本 28 | 此集成使用的是官方镜像`valkey/valkey:latest`,为了环境的稳定性,建议使用者将latest修改为固定的稳定版本。 -------------------------------------------------------------------------------- /valkey/cluster/config/valkey.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | -------------------------------------------------------------------------------- /valkey/cluster/create-cluster.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | echo "[*] Waiting for all Valkey nodes to be ready..." 4 | 5 | # 先确认节点都起来了 6 | for i in {1..6}; do 7 | port=$((6378+i)) 8 | while ! nc -z 127.0.0.1 $port; do 9 | echo "Waiting for valkey-node$i (port $port)..." 10 | sleep 1 11 | done 12 | done 13 | 14 | echo "[*] All nodes are up. Creating cluster..." 15 | 16 | # 执行集群创建命令 17 | docker run -i --rm --network host valkey/valkey valkey-cli \ 18 | --cluster create \ 19 | 192.168.100.19:6379 \ 20 | 192.168.100.19:6380 \ 21 | 192.168.100.19:6381 \ 22 | 192.168.100.19:6382 \ 23 | 192.168.100.19:6383 \ 24 | 192.168.100.19:6384 \ 25 | --cluster-replicas 1 \ 26 | -a yourpassword \ 27 | --cluster-yes 28 | 29 | echo "[✓] Valkey Cluster created successfully!" -------------------------------------------------------------------------------- /valkey/cluster/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | valkey-node1: 5 | image: valkey/valkey:latest 6 | container_name: valkey-node1 7 | restart: unless-stopped 8 | ports: 9 | - "6379:6379" 10 | - "16379:16379" 11 | volumes: 12 | - ./nodes/node1/data:/data 13 | - ./nodes/node1/valkey-node.conf:/usr/local/etc/valkey/valkey.conf 14 | command: > 15 | valkey-server /usr/local/etc/valkey/valkey.conf 16 | --cluster-announce-ip 192.168.100.19 17 | --cluster-announce-port 6379 18 | --cluster-announce-bus-port 16379 19 | networks: 20 | valkey-net: 21 | ipv4_address: 172.20.0.11 22 | 23 | valkey-node2: 24 | image: valkey/valkey:latest 25 | container_name: valkey-node2 26 | restart: unless-stopped 27 | ports: 28 | - "6380:6379" 29 | - "16380:16379" 30 | volumes: 31 | - ./nodes/node2/data:/data 32 | - ./nodes/node2/valkey-node.conf:/usr/local/etc/valkey/valkey.conf 33 | command: > 34 | valkey-server /usr/local/etc/valkey/valkey.conf 35 | --cluster-announce-ip 192.168.100.19 36 | --cluster-announce-port 6380 37 | --cluster-announce-bus-port 16380 38 | networks: 39 | valkey-net: 40 | ipv4_address: 172.20.0.12 41 | 42 | valkey-node3: 43 | image: valkey/valkey:latest 44 | container_name: valkey-node3 45 | restart: unless-stopped 46 | ports: 47 | - "6381:6379" 48 | - "16381:16379" 49 | volumes: 50 | - ./nodes/node3/data:/data 51 | - ./nodes/node3/valkey-node.conf:/usr/local/etc/valkey/valkey.conf 52 | command: > 53 | valkey-server /usr/local/etc/valkey/valkey.conf 54 | --cluster-announce-ip 192.168.100.19 55 | --cluster-announce-port 6381 56 | --cluster-announce-bus-port 16381 57 | networks: 58 | valkey-net: 59 | ipv4_address: 172.20.0.13 60 | 61 | valkey-node4: 62 | image: valkey/valkey:latest 63 | container_name: valkey-node4 64 | restart: unless-stopped 65 | ports: 66 | - "6382:6379" 67 | - "16382:16379" 68 | volumes: 69 | - ./nodes/node4/data:/data 70 | - ./nodes/node4/valkey-node.conf:/usr/local/etc/valkey/valkey.conf 71 | command: > 72 | valkey-server /usr/local/etc/valkey/valkey.conf 73 | --cluster-announce-ip 192.168.100.19 74 | --cluster-announce-port 6382 75 | --cluster-announce-bus-port 16382 76 | networks: 77 | valkey-net: 78 | ipv4_address: 172.20.0.14 79 | 80 | valkey-node5: 81 | image: valkey/valkey:latest 82 | container_name: valkey-node5 83 | restart: unless-stopped 84 | ports: 85 | - "6383:6379" 86 | - "16383:16379" 87 | volumes: 88 | - ./nodes/node5/data:/data 89 | - ./nodes/node5/valkey-node.conf:/usr/local/etc/valkey/valkey.conf 90 | command: > 91 | valkey-server /usr/local/etc/valkey/valkey.conf 92 | --cluster-announce-ip 192.168.100.19 93 | --cluster-announce-port 6383 94 | --cluster-announce-bus-port 16383 95 | networks: 96 | valkey-net: 97 | ipv4_address: 172.20.0.15 98 | 99 | valkey-node6: 100 | image: valkey/valkey:latest 101 | container_name: valkey-node6 102 | restart: unless-stopped 103 | ports: 104 | - "6384:6379" 105 | - "16384:16379" 106 | volumes: 107 | - ./nodes/node6/data:/data 108 | - ./nodes/node6/valkey-node.conf:/usr/local/etc/valkey/valkey.conf 109 | command: > 110 | valkey-server /usr/local/etc/valkey/valkey.conf 111 | --cluster-announce-ip 192.168.100.19 112 | --cluster-announce-port 6384 113 | --cluster-announce-bus-port 16384 114 | networks: 115 | valkey-net: 116 | ipv4_address: 172.20.0.16 117 | 118 | networks: 119 | valkey-net: 120 | driver: bridge 121 | ipam: 122 | config: 123 | - subnet: 172.20.0.0/24 124 | -------------------------------------------------------------------------------- /valkey/cluster/nodes/node1/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /valkey/cluster/nodes/node1/valkey-node.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | -------------------------------------------------------------------------------- /valkey/cluster/nodes/node2/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /valkey/cluster/nodes/node2/valkey-node.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | -------------------------------------------------------------------------------- /valkey/cluster/nodes/node3/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /valkey/cluster/nodes/node3/valkey-node.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | -------------------------------------------------------------------------------- /valkey/cluster/nodes/node4/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /valkey/cluster/nodes/node4/valkey-node.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | -------------------------------------------------------------------------------- /valkey/cluster/nodes/node5/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /valkey/cluster/nodes/node5/valkey-node.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | -------------------------------------------------------------------------------- /valkey/cluster/nodes/node6/data/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /valkey/cluster/nodes/node6/valkey-node.conf: -------------------------------------------------------------------------------- 1 | port 6379 2 | cluster-enabled yes 3 | cluster-config-file nodes.conf 4 | cluster-node-timeout 5000 5 | appendonly yes 6 | protected-mode no 7 | 8 | # 生产强烈建议设置密码(主从都需) 9 | requirepass yourpassword 10 | masterauth yourpassword 11 | 12 | # 持久化 13 | dir /data 14 | --------------------------------------------------------------------------------