├── kafka ├── README.md ├── cluster-zk │ ├── README.md │ └── docker-compose.yml ├── kraft │ └── docker-compose.yml └── docker-compose.yml ├── metabase ├── db_user.txt ├── db_password.txt ├── .env ├── docker-compose.yml └── README.md ├── couchdb ├── standalone │ ├── .gitignore │ ├── config │ │ └── local.ini │ └── docker-compose.yml ├── cluster │ ├── .gitignore │ └── docker-compose.yml ├── img │ └── ui.png └── README.md ├── jenkins ├── .env ├── docker-compose.yml └── README.md ├── scylladb ├── .gitignore ├── img │ └── logo.png ├── standalone │ └── docker-compose.yml ├── cluster │ └── docker-compose.yml └── Readme.md ├── redis ├── standalone │ ├── docker │ │ └── redis.Dockerfile │ ├── .gitignore │ ├── conf │ │ ├── redis-commander.json │ │ ├── redis-replica.conf │ │ └── redis.conf │ └── docker-compose.yml ├── img │ ├── ui.png │ └── logo.png └── README.md ├── weaviate ├── weaviate_data │ └── README.md ├── img │ └── img.png ├── client │ ├── README.md │ ├── main.go │ ├── go.mod │ └── go.sum ├── README.md └── docker-compose.yml ├── .github ├── FUNDING.yml └── workflows │ └── jekyll-gh-pages.yml ├── .gitignore ├── images └── multi-broker-kafka-cluster.png ├── prometheus-grafana ├── grafana │ ├── config.monitoring │ └── provisioning │ │ ├── dashboards │ │ └── dashboard.yml │ │ └── datasources │ │ └── datasource.yml ├── alertmanager │ └── config.yml ├── prometheus.yml ├── prometheus │ ├── alert.rules │ └── prometheus.yml └── docker-compose.yml ├── jaeger ├── .infragenie │ └── infrastructure_model.png ├── docker-compose.yml └── README.md ├── prometheus-pushgateway └── docker-compose.yml ├── mysql └── standalone │ └── docker-compose.yml ├── postgres ├── single │ └── docker-compose.yml └── replication │ ├── setup-slave.sh │ ├── setup-master.sh │ ├── pg_hba.conf │ ├── docker-compose-replication.yml │ ├── master.conf │ └── slave.conf ├── rabbitmq └── docker-compose.yml ├── debezium └── postgres │ ├── scripts │ └── data.sql │ ├── connector.json │ ├── README.md │ └── docker-compose.yml ├── sonarqube └── docker-compose.yml ├── LICENSE └── README.md /kafka/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metabase/db_user.txt: -------------------------------------------------------------------------------- 1 | metabase -------------------------------------------------------------------------------- /couchdb/standalone/.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | -------------------------------------------------------------------------------- /metabase/db_password.txt: -------------------------------------------------------------------------------- 1 | password123 -------------------------------------------------------------------------------- /jenkins/.env: -------------------------------------------------------------------------------- 1 | JENKINS_AGENT_SSH_PUBLIC_KEY= 2 | -------------------------------------------------------------------------------- /scylladb/.gitignore: -------------------------------------------------------------------------------- 1 | standalone/data 2 | cluster/data-* 3 | -------------------------------------------------------------------------------- /couchdb/cluster/.gitignore: -------------------------------------------------------------------------------- 1 | data-1 2 | data-2 3 | data-3 4 | -------------------------------------------------------------------------------- /redis/standalone/docker/redis.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM redis:latest 2 | -------------------------------------------------------------------------------- /redis/standalone/.gitignore: -------------------------------------------------------------------------------- 1 | data 2 | data-replica 3 | .conf 4 | 5 | -------------------------------------------------------------------------------- /weaviate/weaviate_data/README.md: -------------------------------------------------------------------------------- 1 | PUT the data in this folder 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: ninadingole 4 | -------------------------------------------------------------------------------- /redis/img/ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/redis/img/ui.png -------------------------------------------------------------------------------- /couchdb/img/ui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/couchdb/img/ui.png -------------------------------------------------------------------------------- /redis/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/redis/img/logo.png -------------------------------------------------------------------------------- /scylladb/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/scylladb/img/logo.png -------------------------------------------------------------------------------- /weaviate/img/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/weaviate/img/img.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | sonarqube/postgre/** 2 | sonarqube/sonarqube/** 3 | 4 | **/.idea/** 5 | .DS_Store 6 | **/.DS_Store 7 | -------------------------------------------------------------------------------- /images/multi-broker-kafka-cluster.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/images/multi-broker-kafka-cluster.png -------------------------------------------------------------------------------- /prometheus-grafana/grafana/config.monitoring: -------------------------------------------------------------------------------- 1 | GF_SECURITY_ADMIN_USER=admin 2 | GF_SECURITY_ADMIN_PASSWORD=foobar 3 | GF_USERS_ALLOW_SIGN_UP=false -------------------------------------------------------------------------------- /jaeger/.infragenie/infrastructure_model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ninadingole/docker-compose-stacks/HEAD/jaeger/.infragenie/infrastructure_model.png -------------------------------------------------------------------------------- /prometheus-pushgateway/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | services: 4 | prometheus-pushgateway: 5 | image: prom/pushgateway 6 | restart: always 7 | # command: 8 | ports: 9 | - 9091:9091 -------------------------------------------------------------------------------- /couchdb/standalone/config/local.ini: -------------------------------------------------------------------------------- 1 | [couchdb] 2 | single_node=true 3 | uuid=0a959b9b8227188afc2ac26ccdf345a6 4 | 5 | [admins] 6 | admin = -pbkdf2-9ef4f730ecaf50efca56c83523f3b9ccec8ddbe7,b5bf2d87de76d769426722d4e646040e,10 7 | -------------------------------------------------------------------------------- /metabase/.env: -------------------------------------------------------------------------------- 1 | # Database environment 2 | DB_NAME=metabase 3 | DB_USER=metabase 4 | DB_PASSWORD=password123 5 | DB_DATA_DIR=/var/lib/postgresql/data 6 | 7 | # Metabase environment 8 | MB_PORT=3000 9 | MB_JAVA_TIMEZONE=Asia/Tehran -------------------------------------------------------------------------------- /prometheus-grafana/grafana/provisioning/dashboards/dashboard.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | providers: 4 | - name: 'Prometheus' 5 | orgId: 1 6 | folder: '' 7 | type: file 8 | disableDeletion: false 9 | editable: true 10 | options: 11 | path: /etc/grafana/provisioning/dashboards -------------------------------------------------------------------------------- /mysql/standalone/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | mysql: 5 | image: mysql:8 6 | ports: 7 | - "3306:3306" 8 | environment: 9 | MYSQL_ROOT_PASSWORD: secret 10 | MYSQL_USER: mysqluser 11 | MYSQL_PASSWORD: mysqlpw 12 | MYSQL_DATABASE: inventory 13 | -------------------------------------------------------------------------------- /postgres/single/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | master: 5 | image: postgres:15 6 | restart: always 7 | environment: 8 | POSTGRES_PASSWORD: password 9 | POSTGRES_DB: data_service 10 | POSTGRES_USER: postgres 11 | ports: 12 | - "5432:5432" 13 | 14 | -------------------------------------------------------------------------------- /prometheus-grafana/alertmanager/config.yml: -------------------------------------------------------------------------------- 1 | route: 2 | receiver: 'slack' 3 | 4 | receivers: 5 | - name: 'slack' 6 | # slack_configs: 7 | # - send_resolved: true 8 | # username: '' 9 | # channel: '#' 10 | # api_url: '' -------------------------------------------------------------------------------- /weaviate/client/README.md: -------------------------------------------------------------------------------- 1 | ## How to Run 2 | 3 | Pre-requisites: 4 | - Go 1.16 or higher 5 | - Weaviate running on localhost:8080 6 | 7 | ### Install the dependencies 8 | 9 | ```bash 10 | go mod tidy 11 | ``` 12 | 13 | ### Run the code 14 | 15 | ```bash 16 | go run main.go 17 | ``` 18 | 19 | If there are no errors, the code will run and you will see the output in the terminal. 20 | -------------------------------------------------------------------------------- /prometheus-grafana/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 15s 3 | evaluation_interval: 15s 4 | 5 | rule_files: 6 | # - "first.rules" 7 | # - "second.rules" 8 | 9 | scrape_configs: 10 | - job_name: prometheus 11 | static_configs: 12 | - targets: ['localhost:9090'] 13 | - job_name: app 14 | scrape_interval: 5s 15 | static_configs: 16 | - targets: ['host.docker.internal:10088'] -------------------------------------------------------------------------------- /redis/standalone/conf/redis-commander.json: -------------------------------------------------------------------------------- 1 | { 2 | "connections": [ 3 | { 4 | "label": "standalone", 5 | "host": "redis", 6 | "port": 6379, 7 | "password": "password", 8 | "dbIndex": 0 9 | }, 10 | { 11 | "label": "replica", 12 | "host": "redis-replica", 13 | "port": 6379, 14 | "password": "password", 15 | "dbIndex": 0 16 | } 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /rabbitmq/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | rabbitmq: 5 | image: rabbitmq:3.7-management 6 | healthcheck: 7 | test: [ "CMD-SHELL", "rabbitmqctl status" ] 8 | interval: 10s 9 | timeout: 10s 10 | retries: 3 11 | ports: 12 | - "15672:15672" 13 | - "5672:5672" 14 | environment: 15 | RABBITMQ_DEFAULT_USER: "guest" 16 | RABBITMQ_DEFAULT_PASS: "guest" 17 | -------------------------------------------------------------------------------- /postgres/replication/setup-slave.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL 5 | 6 | CREATE TABLE test_replication (id INT PRIMARY KEY, name VARCHAR(30)); 7 | 8 | CREATE SUBSCRIPTION my_subscription 9 | CONNECTION 'host=postgres-master-1 port=5432 dbname=data_service password=my_replicator_password user=replicator' PUBLICATION pub; 10 | 11 | EOSQL 12 | -------------------------------------------------------------------------------- /weaviate/client/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "context" 5 | "fmt" 6 | "github.com/weaviate/weaviate-go-client/v4/weaviate" 7 | ) 8 | 9 | func main() { 10 | cfg := weaviate.Config{ 11 | Host: "localhost:8080", // Replace with your endpoint 12 | Scheme: "http", 13 | } 14 | 15 | client, err := weaviate.NewClient(cfg) 16 | if err != nil { 17 | panic(err) 18 | } 19 | 20 | schema, err := client.Schema().Getter().Do(context.Background()) 21 | if err != nil { 22 | panic(err) 23 | } 24 | fmt.Printf("%v", schema) 25 | } 26 | -------------------------------------------------------------------------------- /couchdb/standalone/docker-compose.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: '3' 3 | 4 | services: 5 | couchdb: 6 | image: bitnami/couchdb:latest 7 | container_name: couchdb 8 | restart: always 9 | ports: 10 | - "5984:5984" 11 | environment: 12 | - COUCHDB_USER=admin 13 | - COUCHDB_PASSWORD=password 14 | - COUCHDB_SECRET=secret 15 | volumes: 16 | - ./data:/bitnami/couchdb 17 | - ./config/local.ini:/opt/bitnami/couchdb/etc/local.d/local.ini 18 | healthcheck: 19 | test: ["CMD", "curl", "-f", "http://localhost:5984/_up"] 20 | -------------------------------------------------------------------------------- /scylladb/standalone/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | scylladb: 5 | image: scylladb/scylla:latest 6 | container_name: scylladb 7 | ports: 8 | - '9042:9042' 9 | - '9160:9160' 10 | - '7004:7000' 11 | - '7005:7001' 12 | - '10000:10000' 13 | volumes: 14 | - ./data:/var/lib/scylla 15 | environment: 16 | - SCYLLA_ARGS=--developer-mode 1 17 | healthcheck: 18 | test: cqlsh -e 'SELECT now() FROM system.local' || exit -1 19 | start_period: 15s 20 | interval: 5s 21 | timeout: 10s 22 | retries: 5 23 | -------------------------------------------------------------------------------- /jenkins/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3" 2 | services: 3 | jenkins: 4 | image: jenkins/jenkins:lts 5 | container_name: jenkins 6 | privileged: true 7 | user: root 8 | ports: 9 | - 8080:8080 10 | - 50000:50000 11 | volumes: 12 | - /home/jenkins_home:/var/jenkins_home 13 | - /var/run/docker.sock:/var/run/docker.sock 14 | agent: 15 | image: jenkins/ssh-agent:jdk11 16 | container_name: jenkins_agent1 17 | privileged: true 18 | user: root 19 | expose: 20 | - 22 21 | environment: 22 | - JENKINS_AGENT_SSH_PUBKEY=${JENKINS_AGENT_SSH_PUBLIC_KEY} 23 | -------------------------------------------------------------------------------- /jaeger/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | jaeger: 4 | image: jaegertracing/all-in-one:latest 5 | ports: 6 | - '6831:6831/udp' 7 | - '16686:16686' 8 | hotrod: 9 | image: jaegertracing/example-hotrod:latest 10 | ports: 11 | - '8082:8080' 12 | command: ['all'] 13 | environment: 14 | - JAEGER_AGENT_HOST=jaeger 15 | # Note: if your application is using Node.js Jaeger Client, you need port 6832, 16 | # unless issue https://github.com/jaegertracing/jaeger/issues/1596 is resolved. 17 | - JAEGER_AGENT_PORT=6831 18 | depends_on: 19 | - jaeger 20 | -------------------------------------------------------------------------------- /postgres/replication/setup-master.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL 5 | CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'my_replicator_password'; 6 | 7 | CREATE TABLE test_replication (id INT PRIMARY KEY, name VARCHAR(30)); 8 | INSERT INTO test_replication (id, name) VALUES (1, 'test'); 9 | INSERT INTO test_replication (id, name) VALUES (2, 'test'); 10 | INSERT INTO test_replication (id, name) VALUES (3, 'test'); 11 | INSERT INTO test_replication (id, name) VALUES (4, 'test'); 12 | 13 | GRANT ALL ON test_replication TO replicator; 14 | 15 | CREATE PUBLICATION pub FOR ALL TABLES; 16 | EOSQL 17 | -------------------------------------------------------------------------------- /prometheus-grafana/prometheus/alert.rules: -------------------------------------------------------------------------------- 1 | groups: 2 | - name: example 3 | rules: 4 | 5 | # Alert for any instance that is unreachable for >2 minutes. 6 | - alert: service_down 7 | expr: up == 0 8 | for: 2m 9 | labels: 10 | severity: page 11 | annotations: 12 | summary: "Instance {{ $labels.instance }} down" 13 | description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 2 minutes." 14 | 15 | - alert: high_load 16 | expr: node_load1 > 0.5 17 | for: 2m 18 | labels: 19 | severity: page 20 | annotations: 21 | summary: "Instance {{ $labels.instance }} under high load" 22 | description: "{{ $labels.instance }} of job {{ $labels.job }} is under high load." 23 | -------------------------------------------------------------------------------- /redis/standalone/conf/redis-replica.conf: -------------------------------------------------------------------------------- 1 | # All option are available at https://redis.io/docs/management/config-file/ 2 | 3 | # Bind to all interfaces 4 | bind 0.0.0.0 5 | 6 | # Specify the port for Redis to listen on 7 | port 6379 8 | 9 | # Enable slave mode 10 | replicaof redis 6379 11 | 12 | # Enable persistence 13 | appendonly yes 14 | 15 | # Set the path to the appendonly file 16 | appendfilename "appendonly.aof" 17 | 18 | # Set the path to the directory containing the appendonly file 19 | dir /data-replica 20 | 21 | # Set the path to the dump file 22 | dbfilename "dump.rdb" 23 | 24 | # Set the path to the directory containing the dump file 25 | dir /data-replica 26 | 27 | # Optional: Set a password for authentication 28 | masterauth password 29 | requirepass password 30 | 31 | -------------------------------------------------------------------------------- /redis/standalone/conf/redis.conf: -------------------------------------------------------------------------------- 1 | # All option are available at https://redis.io/docs/management/config-file/ 2 | # Bind to all interfaces 3 | bind 0.0.0.0 4 | 5 | # Specify the port for Redis to listen on 6 | port 6379 7 | 8 | # Enable master mode 9 | # replica-serve-stale-data no 10 | # replica-read-only yes 11 | replication-mode master 12 | 13 | # Enable persistence 14 | appendonly yes 15 | 16 | # Set the path to the appendonly file 17 | appendfilename "appendonly.aof" 18 | 19 | # Set the path to the directory containing the appendonly file 20 | dir /data 21 | 22 | # Set the path to the dump file 23 | dbfilename "dump.rdb" 24 | 25 | # Set the path to the directory containing the dump file 26 | dir /data 27 | 28 | # Optional: Set a password for authentication 29 | requirepass password 30 | -------------------------------------------------------------------------------- /jaeger/README.md: -------------------------------------------------------------------------------- 1 | # Jaeger 2 | 3 | This docker compose setup starts Jaeger and hotrod services. 4 | 5 | To start the service run: 6 | 7 | ```console 8 | docker compose up 9 | 10 | use -d option to start the services in detached mode 11 | ``` 12 | 13 | ### Ports 14 | Below Ports are exposed by the services, you can always change them according to your need in the yml 15 | [here](https://github.com/ninadingole/docker-images/blob/a423f995b3388320df1c9a3b404694ff7a1aad13/jaeger/docker-compose.yml#L1) 16 | 17 | | Port | Description | 18 | |--------|-------------------| 19 | | 6831 | Jaeger Agent Port | 20 | | 16686 | Jaeger UI Port | 21 | | 8082 | Hotrod UI Port | 22 | 23 | ### Infrastructure model 24 | 25 | 26 | ![Infrastructure model](.infragenie/infrastructure_model.png) 27 | 28 | -------------------------------------------------------------------------------- /debezium/postgres/scripts/data.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE IF NOT EXISTS movies ( 3 | id bigint PRIMARY KEY, 4 | title VARCHAR(255) NOT NULL, 5 | year INTEGER NOT NULL, 6 | director VARCHAR(255) NOT NULL, 7 | rating DECIMAL NOT NULL 8 | ); 9 | 10 | INSERT INTO movies (id, title, year, director, rating) VALUES (1, 'The Shawshank Redemption', 1994, 'Frank Darabont', 9.3); 11 | INSERT INTO movies (id, title, year, director, rating) VALUES (2, 'The Godfather', 1972, 'Francis Ford Coppola', 9.2); 12 | INSERT INTO movies (id, title, year, director, rating) VALUES (3, 'The Godfather: Part II', 1974, 'Francis Ford Coppola', 9.0); 13 | INSERT INTO movies (id, title, year, director, rating) VALUES (4, 'The Dark Knight', 2008, 'Christopher Nolan', 9.0); 14 | INSERT INTO movies (id, title, year, director, rating) VALUES (5, 'Interstellar', 2014, 'Christopher Nolan', 10); 15 | 16 | -------------------------------------------------------------------------------- /weaviate/README.md: -------------------------------------------------------------------------------- 1 | # Weaviate 2 | 3 | ![Weaviate](./img/img.png) 4 | 5 | 6 | Weaviate is a cloud-native, modular, real-time vector search engine. It is based on the concept of a knowledge graph, 7 | which allows you to interact with your data through a GraphQL API. Weaviate is open-source and can be deployed 8 | on-premise or in the cloud. 9 | 10 | 11 | ## Prerequisites 12 | - Docker 13 | - Docker Compose 14 | 15 | ## Running the Stack 16 | 17 | ### Standalone 18 | 19 | Inside the directory, run `docker-compose up` to start the connector. 20 | 21 | ### Port Configurations 22 | 23 | - `8080` - Weaviate REST API 24 | - `50051` - Weaviate gRPC API 25 | 26 | 27 | ## Test the Stack 28 | 29 | Inside the `client` directory, run `go run main.go` to test the Weaviate REST API. 30 | more information on how to run the client can be found in the [client](./client/README.md) directory. 31 | -------------------------------------------------------------------------------- /postgres/replication/pg_hba.conf: -------------------------------------------------------------------------------- 1 | # TYPE DATABASE USER ADDRESS METHOD# "local" is for Unix domain socket connections only 2 | local all all trust 3 | # IPv4 local connections: 4 | host all all 127.0.0.1/32 trust 5 | # IPv6 local connections: 6 | host all all ::1/128 trust 7 | host all all 0.0.0.0/0 trust 8 | # Allow replication connections from localhost, by a user with the 9 | # replication privilege. 10 | local replication all trust 11 | host replication all 127.0.0.1/32 trust 12 | host replication all ::1/128 trust 13 | host replication replicator 0.0.0.0/0 trust 14 | 15 | host all all all md5 16 | -------------------------------------------------------------------------------- /weaviate/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | weaviate: 4 | command: 5 | - --host 6 | - 0.0.0.0 7 | - --port 8 | - '8080' 9 | - --scheme 10 | - http 11 | image: cr.weaviate.io/semitechnologies/weaviate:latest 12 | ports: 13 | - 8080:8080 # HTTP 14 | - 50051:50051 # gRPC 15 | volumes: 16 | - weaviate_data:/var/lib/weaviate 17 | restart: on-failure 18 | environment: 19 | QUERY_DEFAULTS_LIMIT: 25 20 | AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' 21 | PERSISTENCE_DATA_PATH: '/var/lib/weaviate' 22 | # PROMETHEUS_MONITORING_ENABLED: 'true' 23 | DEFAULT_VECTORIZER_MODULE: 'none' 24 | ENABLE_MODULES: 'text2vec-cohere,text2vec-huggingface,text2vec-palm,text2vec-openai,generative-openai,generative-cohere,generative-palm,ref2vec-centroid,reranker-cohere,qna-openai' 25 | CLUSTER_HOSTNAME: 'node1' 26 | volumes: 27 | weaviate_data: 28 | -------------------------------------------------------------------------------- /debezium/postgres/connector.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "movies-db-connector", 3 | "config": { 4 | "connector.class": "io.debezium.connector.postgresql.PostgresConnector", 5 | "plugin.name": "pgoutput", 6 | "tasks.max": "1", 7 | "database.hostname": "postgres", 8 | "database.port": "5432", 9 | "database.user": "postgres", 10 | "database.password": "postgres", 11 | "database.dbname": "movies_db", 12 | "database.server.name": "postgres", 13 | "table.include.list": "public.movies", 14 | "database.history.kafka.bootstrap.servers": "kafka:9092", 15 | "database.history.kafka.topic": "schema-changes.movies", 16 | "topic.prefix": "postgres", 17 | "topic.creation.enable": "true", 18 | "topic.creation.default.replication.factor": "1", 19 | "topic.creation.default.partitions": "1", 20 | "topic.creation.default.cleanup.policy": "delete", 21 | "topic.creation.default.retention.ms": "604800000" 22 | } 23 | } -------------------------------------------------------------------------------- /kafka/cluster-zk/README.md: -------------------------------------------------------------------------------- 1 | ## Apache Kafka cluster 2 | 3 | This docker compose provides 3 broker nodes and 1 zookeeper node Kafka Cluster. 4 | This helps to test Kafka application on local instead of a real cluster. 5 | 6 | The configurations are bare minimum to start the server and could be changed based on requirement 7 | 8 | There is also a Kafka UI application available at http://localhost:8080 9 | 10 | ![](../../images/multi-broker-kafka-cluster.png) 11 | 12 | ### How to start 13 | 14 | ```bash 15 | docker-compose up 16 | 17 | use -d to run in detached mode 18 | ``` 19 | > If you don't see changes to the cluster after updating the yml, try doing 20 | > `docker compose down` and then start the cluster again. 21 | 22 | ### Port Mapping 23 | | Port | Description | 24 | |------|-------------------------| 25 | | 2181 | Zookeeper | 26 | | 9092 | Kafka Broker 1 | 27 | | 9093 | Kafka Broker 2 | 28 | | 9094 | Kafka Broker 3 | 29 | | 8080 | Kafka UI | 30 | | 1099 | JMX PORT on all brokers | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /sonarqube/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | db: 4 | image: postgres 5 | environment: 6 | POSTGRES_PASSWORD: admin 7 | POSTGRES_USER: admin 8 | restart: always 9 | volumes: 10 | - "./postgre/data:/var/lib/postgresql/data" 11 | ports: 12 | - "5432:5432" 13 | sonar: 14 | image: sonarqube 15 | depends_on: 16 | - db 17 | environment: 18 | SONAR_JDBC_URL: jdbc:postgresql://db:5432/postgres 19 | SONAR_JDBC_USERNAME: admin 20 | SONAR_JDBC_PASSWORD: admin 21 | restart: always 22 | volumes: 23 | - type: volume 24 | source: "sonarqube_data" 25 | target: "/opt/sonarqube/data" 26 | - type: volume 27 | source: "sonarqube_extensions" 28 | target: "/opt/sonarqube/extensions" 29 | - type: volume 30 | source: "sonarqube_logs" 31 | target: "/opt/sonarqube/logs" 32 | links: 33 | - db:db 34 | ports: 35 | - 9000:9000 36 | 37 | volumes: 38 | sonarqube_data: 39 | sonarqube_extensions: 40 | sonarqube_logs: 41 | -------------------------------------------------------------------------------- /postgres/replication/docker-compose-replication.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | master: 5 | image: postgres:13.3 6 | restart: always 7 | environment: 8 | POSTGRES_PASSWORD: password 9 | POSTGRES_DB: data_service 10 | volumes: 11 | - ./master.conf:/etc/postgresql/postgresql.conf 12 | - ./pg_hba.conf:/etc/postgresql/pg_hba.conf 13 | - ./setup-master.sh:/docker-entrypoint-initdb.d/init-user-db.sh 14 | ports: 15 | - "5432:5432" 16 | command: 17 | - "postgres" 18 | - "-c" 19 | - "config_file=/etc/postgresql/postgresql.conf" 20 | 21 | slave: 22 | image: postgres:13.3 23 | restart: always 24 | environment: 25 | POSTGRES_PASSWORD: password 26 | POSTGRES_DB: data_service 27 | volumes: 28 | - ./slave.conf:/etc/postgresql/postgresql.conf 29 | - ./pg_hba.conf:/etc/postgresql/pg_hba.conf 30 | - ./setup-slave.sh:/docker-entrypoint-initdb.d/init-user-db.sh 31 | ports: 32 | - "54321:5432" 33 | command: 34 | - "postgres" 35 | - "-c" 36 | - "config_file=/etc/postgresql/postgresql.conf" 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Neenad Ingole 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 | -------------------------------------------------------------------------------- /kafka/kraft/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | broker: 5 | image: docker.io/bitnami/kafka:latest 6 | ports: 7 | - "9092:9092" 8 | - "9094:9094" 9 | environment: 10 | - KAFKA_ENABLE_KRAFT=yes 11 | - KAFKA_CFG_PROCESS_ROLES=broker,controller 12 | - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER 13 | - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094 14 | - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT 15 | - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092,EXTERNAL://kafka_b:9094 16 | - KAFKA_BROKER_ID=1 17 | - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093 18 | - ALLOW_PLAINTEXT_LISTENER=yes 19 | - KAFKA_CFG_NODE_ID=1 20 | - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true 21 | - BITNAMI_DEBUG=yes 22 | - KAFKA_CFG_NUM_PARTITIONS=2 23 | healthcheck: 24 | test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server localhost:9092 --list"] 25 | interval: 10s 26 | timeout: 5s 27 | retries: 3 28 | start_period: 5s 29 | 30 | 31 | -------------------------------------------------------------------------------- /couchdb/README.md: -------------------------------------------------------------------------------- 1 | # CouchDB 2 | 3 | ![CouchDB Logo](https://docs.couchdb.org/en/stable/_static/logo.png) 4 | 5 | Apache CouchDB is an open-source NoSQL database that uses JSON to store data. It is a distributed, fault-tolerant, and 6 | schema-free document-oriented database that is accessible through a RESTful HTTP/JSON API. CouchDB is written in Erlang 7 | and is available on multiple platforms. 8 | 9 | ## Prerequisites 10 | 11 | - Docker 12 | - Docker Compose 13 | 14 | ## Running the Stack 15 | 16 | ### How to Run 17 | 18 | Inside `standalone` or `cluster` directory, run `docker-compose up` to start the connector. 19 | 20 | #### Port Configurations 21 | 22 | - `5984` - CouchDB REST API 23 | 24 | 25 | 26 | ## Configurations 27 | 28 | Default authentication credentials: 29 | - Username: `admin` 30 | - Password: `password` 31 | - Secret: `secret` 32 | 33 | 34 | 35 | ## CouchDB Fauxton 36 | 37 | CouchDB comes with a built-in administration interface called Fauxton. It is a web-based interface that allows you to 38 | manage your CouchDB instance. You can access Fauxton by visiting [http://localhost:5984/_utils/](http://localhost:5984/_utils/) in your browser. 39 | 40 | ![CouchDB Fauxton](./img/ui.png) 41 | -------------------------------------------------------------------------------- /metabase/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | services: 3 | metabase: 4 | image: metabase/metabase:latest 5 | container_name: metabase 6 | hostname: metabase 7 | volumes: 8 | - /dev/urandom:/dev/random:ro 9 | ports: 10 | - 3000:3000 11 | environment: 12 | MB_DB_TYPE: postgres 13 | MB_DB_DBNAME: metabase 14 | MB_DB_PORT: 5432 15 | MB_DB_USER_FILE: /run/secrets/db_user 16 | MB_DB_PASS_FILE: /run/secrets/db_password 17 | MB_DB_HOST: postgres 18 | networks: 19 | - metanet1 20 | secrets: 21 | - db_password 22 | - db_user 23 | healthcheck: 24 | test: curl --fail -I http://localhost:3000/api/health || exit 1 25 | interval: 15s 26 | timeout: 5s 27 | retries: 5 28 | postgres: 29 | image: postgres:latest 30 | container_name: postgres 31 | hostname: postgres 32 | environment: 33 | POSTGRES_USER_FILE: /run/secrets/db_user 34 | POSTGRES_DB: metabase 35 | POSTGRES_PASSWORD_FILE: /run/secrets/db_password 36 | networks: 37 | - metanet1 38 | secrets: 39 | - db_password 40 | - db_user 41 | networks: 42 | metanet1: 43 | driver: bridge 44 | secrets: 45 | db_password: 46 | file: db_password.txt 47 | db_user: 48 | file: db_user.txt 49 | -------------------------------------------------------------------------------- /scylladb/cluster/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | scylladb-master: 5 | image: scylladb/scylla:latest 6 | container_name: scylladb-master 7 | ports: 8 | - '9042:9042' 9 | - '9160:9160' 10 | - '7004:7000' 11 | - '7005:7001' 12 | - '10000:10000' 13 | volumes: 14 | - ./data-master:/var/lib/scylla 15 | environment: 16 | - SCYLLA_ARGS=--developer-mode 1 17 | healthcheck: 18 | test: cqlsh -e 'SELECT now() FROM system.local' || exit -1 19 | start_period: 15s 20 | interval: 5s 21 | timeout: 10s 22 | retries: 10 23 | 24 | scylladb-node1: 25 | image: scylladb/scylla:latest 26 | container_name: scylladb-node1 27 | depends_on: 28 | scylladb-master: 29 | condition: service_healthy 30 | ports: 31 | - '9043:9042' 32 | - '9161:9160' 33 | - '7006:7000' 34 | - '7007:7001' 35 | - '10001:10000' 36 | volumes: 37 | - ./data-node1:/var/lib/scylla 38 | environment: 39 | - SCYLLA_ARGS=--developer-mode 1 40 | command: --seeds=scylladb-master 41 | healthcheck: 42 | test: cqlsh -e 'SELECT now() FROM system.local' || exit -1 43 | start_period: 15s 44 | interval: 5s 45 | timeout: 10s 46 | retries: 10 47 | 48 | 49 | -------------------------------------------------------------------------------- /redis/README.md: -------------------------------------------------------------------------------- 1 | ![redis](./img/logo.png) 2 | 3 | 4 | # Redis 5 | Redis is a versatile and fast data store that supports strings, hashes, lists, sets, streams, and more. It also offers programmability, extensibility, persistence, clustering, and high availability features, as well as Redis Stack for modern data models and processing engines. 6 | 7 | # Management UI 8 | Redis Commander is a web-based management tool for Redis. It is a simple and intuitive tool that allows you to interact with Redis, monitor key space, and execute commands. 9 | 10 | Navigate to http://localhost:8081 to access the Redis Commander UI. 11 | 12 | ![redis-commander](./img/ui.png) 13 | 14 | 15 | ## Prerequisites 16 | - Docker 17 | - Docker Compose 18 | 19 | ## Running the Stack 20 | 21 | ### Standalone 22 | 23 | Inside the `standalone` directory, run `docker-compose up` to start the connector. 24 | 25 | ### Port Configurations 26 | 27 | - `6379` - Master Redis port 28 | - `6380` - Slave Redis port 29 | 30 | ### Configuration 31 | 32 | All the configurations are available in the `standalone/conf` directory. 33 | 34 | - `redis.conf` - Master Redis configuration file 35 | - `redis-replica.conf` - Replica Redis configuration file 36 | - `redis-commander.json` - Redis Commander configuration file 37 | 38 | ### Data Persistence 39 | 40 | - `standalone/data` - Master Redis data directory 41 | - `standalone/data-replica` - Replica Redis data directory 42 | 43 | 44 | -------------------------------------------------------------------------------- /redis/standalone/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | redis: 5 | build: 6 | context: ./docker 7 | dockerfile: redis.Dockerfile 8 | container_name: redis 9 | ports: 10 | - '6379:6379' 11 | volumes: 12 | - ./data:/data 13 | - .conf/redis.conf:/usr/local/etc/redis/redis.conf 14 | command: ["redis-server", "/usr/local/etc/redis/redis.conf"] 15 | healthcheck: 16 | test: redis-cli ping 17 | start_period: 15s 18 | interval: 5s 19 | timeout: 10s 20 | retries: 5 21 | 22 | redis-replica: 23 | build: 24 | context: ./docker 25 | dockerfile: redis.Dockerfile 26 | container_name: redis-replica 27 | ports: 28 | - '6380:6379' 29 | volumes: 30 | - ./data-replica:/data 31 | - .conf/redis-replica.conf:/usr/local/etc/redis/redis.conf 32 | command: ["redis-server", "/usr/local/etc/redis/redis.conf", "--slaveof", "redis", "6379"] 33 | healthcheck: 34 | test: redis-cli ping 35 | start_period: 15s 36 | interval: 5s 37 | timeout: 10s 38 | retries: 5 39 | 40 | 41 | redis-commander: 42 | container_name: redis-commander 43 | hostname: redis-commander 44 | image: ghcr.io/joeferner/redis-commander:latest 45 | restart: always 46 | volumes: 47 | - ./conf/redis-commander.json:/redis-commander/config/local-production.json 48 | ports: 49 | - "8081:8081" 50 | -------------------------------------------------------------------------------- /jenkins/README.md: -------------------------------------------------------------------------------- 1 | # Jenkins Setup 2 | 3 | This repository contains a Docker Compose configuration for setting up Jenkins with an agent for building projects. 4 | 5 | ## Prerequisites 6 | 7 | - Docker 8 | - Docker Compose 9 | 10 | ## Services 11 | 12 | ### Jenkins Master 13 | 14 | The Jenkins master service is based on the `jenkins/jenkins:lts` image and provides the Jenkins web interface. 15 | 16 | - Access the Jenkins web interface at [http://localhost:8080](http://localhost:8080) 17 | - Use the initial admin password to unlock Jenkins (found in the Jenkins logs or inside the container) 18 | 19 | ### Jenkins Agent 20 | 21 | The Jenkins agent service is based on the `jenkins/ssh-agent:jdk11` image and provides the agent for building projects. 22 | 23 | - Configure the agent in Jenkins using the SSH public key provided in the `JENKINS_AGENT_SSH_PUBLIC_KEY` environment variable. 24 | 25 | ## Usage 26 | 27 | 1. Create a .env file with the following content 28 | 29 | ```bash 30 | JENKINS_AGENT_SSH_PUBLIC_KEY=YOUR_SSH_PUBLIC_KEY_HERE 31 | ``` 32 | Note: Replace YOUR_SSH_PUBLIC_KEY_HERE with your actual SSH public key. If you don't have an SSH key, you can generate one using the following command: 33 | ```bash 34 | ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 35 | ``` 36 | Follow the prompts to generate the SSH key. The public key will be saved to ~/.ssh/id_rsa.pub. 37 | 38 | 2. Start the Jenkins services: 39 | ```bash 40 | docker-compose up -d 41 | ``` -------------------------------------------------------------------------------- /debezium/postgres/README.md: -------------------------------------------------------------------------------- 1 | ## Debezium Postgres CDC 2 | 3 | This module provides a Debezium connector for Postgres. It is based on the [Debezium Postgres connector](https://debezium.io/documentation/reference/1.0/connectors/postgresql.html) 4 | and uses confluent zookeeper, broker, schema registry and rest proxy. 5 | 6 | ### Prerequisites 7 | - Docker 8 | - Docker Compose 9 | 10 | 11 | ### Running the Stack 12 | - Run `docker-compose up` to start the connector 13 | - Run `docker-compose down` to stop the connector 14 | - Run `docker-compose logs -f` to view the logs 15 | - Run `docker-compose exec postgres bash` to access the postgres container 16 | - Run `docker-compose exec broker bash` to access the kafka container 17 | 18 | 19 | ### Registering the connector 20 | - Run `curl -X POST -H "Content-Type: application/json" -d @connector.json http://localhost:8083/connectors` 21 | 22 | ### Testing the connector 23 | - Run `docker-compose exec postgres bash` to access the postgres container 24 | - Run `psql -U postgres` to access the postgres database 25 | 26 | ### Viewing the data 27 | - Run `docker-compose exec broker bash` to access the kafka container 28 | - Run `kafka-console-consumer --bootstrap-server broker:9092 --topic postgres.public.movies --from-beginning` 29 | 30 | 31 | ## Schema Registry 32 | 33 | ### Viewing the schema 34 | - Run `curl -X GET http://localhost:8081/subjects/postgres.public.movies/versions/1` 35 | 36 | 37 | ### Registering the schema 38 | - Run `curl -X POST -H "Content-Type: application/json" -d @schema.json http://localhost:8081/subjects/postgres.public.movies/versions` 39 | -------------------------------------------------------------------------------- /.github/workflows/jekyll-gh-pages.yml: -------------------------------------------------------------------------------- 1 | # Sample workflow for building and deploying a Jekyll site to GitHub Pages 2 | name: Deploy Jekyll with GitHub Pages dependencies preinstalled 3 | 4 | on: 5 | # Runs on pushes targeting the default branch 6 | push: 7 | branches: ["master"] 8 | 9 | # Allows you to run this workflow manually from the Actions tab 10 | workflow_dispatch: 11 | 12 | # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages 13 | permissions: 14 | contents: read 15 | pages: write 16 | id-token: write 17 | 18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. 19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 20 | concurrency: 21 | group: "pages" 22 | cancel-in-progress: false 23 | 24 | jobs: 25 | # Build job 26 | build: 27 | runs-on: ubuntu-latest 28 | steps: 29 | - name: Checkout 30 | uses: actions/checkout@v3 31 | - name: Setup Pages 32 | uses: actions/configure-pages@v3 33 | - name: Build with Jekyll 34 | uses: actions/jekyll-build-pages@v1 35 | with: 36 | source: ./ 37 | destination: ./_site 38 | - name: Upload artifact 39 | uses: actions/upload-pages-artifact@v1 40 | 41 | # Deployment job 42 | deploy: 43 | environment: 44 | name: github-pages 45 | url: ${{ steps.deployment.outputs.page_url }} 46 | runs-on: ubuntu-latest 47 | needs: build 48 | steps: 49 | - name: Deploy to GitHub Pages 50 | id: deployment 51 | uses: actions/deploy-pages@v1 52 | -------------------------------------------------------------------------------- /couchdb/cluster/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | couchdb1: 5 | image: bitnami/couchdb:latest 6 | container_name: couchdb1 7 | restart: always 8 | ports: 9 | - "5984:5984" 10 | volumes: 11 | - ./data-1:/bitnami/couchdb 12 | environment: 13 | - COUCHDB_USER=admin 14 | - COUCHDB_PASSWORD=password 15 | - COUCHDB_SECRET=secret 16 | - COUCHDB_NODE_NAME=couchdb@node1 17 | networks: 18 | - couchdb-cluster 19 | healthcheck: 20 | test: ["CMD", "curl", "-f", "http://localhost:5984/_up"] 21 | 22 | couchdb2: 23 | image: bitnami/couchdb:latest 24 | container_name: couchdb2 25 | restart: always 26 | ports: 27 | - "5985:5984" 28 | volumes: 29 | - ./data-2:/bitnami/couchdb 30 | environment: 31 | - COUCHDB_USER=admin 32 | - COUCHDB_PASSWORD=password 33 | - COUCHDB_SECRET=secret 34 | - COUCHDB_NODE_NAME=couchdb@node2 35 | networks: 36 | - couchdb-cluster 37 | healthcheck: 38 | test: ["CMD", "curl", "-f", "http://localhost:5984/_up"] 39 | 40 | couchdb3: 41 | image: bitnami/couchdb:latest 42 | container_name: couchdb3 43 | restart: always 44 | ports: 45 | - "5986:5984" 46 | volumes: 47 | - ./data-3:/bitnami/couchdb 48 | environment: 49 | - COUCHDB_USER=admin 50 | - COUCHDB_PASSWORD=password 51 | - COUCHDB_SECRET=secret 52 | - COUCHDB_NODE_NAME=couchdb@node3 53 | networks: 54 | - couchdb-cluster 55 | healthcheck: 56 | test: ["CMD", "curl", "-f", "http://localhost:5984/_up"] 57 | 58 | networks: 59 | couchdb-cluster: 60 | driver: bridge 61 | -------------------------------------------------------------------------------- /prometheus-grafana/grafana/provisioning/datasources/datasource.yml: -------------------------------------------------------------------------------- 1 | # config file version 2 | apiVersion: 1 3 | 4 | # list of datasources that should be deleted from the database 5 | deleteDatasources: 6 | - name: Prometheus 7 | orgId: 1 8 | 9 | # list of datasources to insert/update depending 10 | # whats available in the database 11 | datasources: 12 | # name of the datasource. Required 13 | - name: Prometheus 14 | # datasource type. Required 15 | type: prometheus 16 | # access mode. direct or proxy. Required 17 | access: proxy 18 | # org id. will default to orgId 1 if not specified 19 | orgId: 1 20 | # url 21 | url: http://prometheus:9090 22 | # database password, if used 23 | password: 24 | # database user, if used 25 | user: 26 | # database name, if used 27 | database: 28 | # enable/disable basic auth 29 | basicAuth: false 30 | # basic auth username, if used 31 | basicAuthUser: 32 | # basic auth password, if used 33 | basicAuthPassword: 34 | # enable/disable with credentials headers 35 | withCredentials: 36 | # mark as default datasource. Max one per org 37 | isDefault: true 38 | # fields that will be converted to json and stored in json_data 39 | jsonData: 40 | graphiteVersion: "1.1" 41 | tlsAuth: false 42 | tlsAuthWithCACert: false 43 | # json object of data that will be encrypted. 44 | secureJsonData: 45 | tlsCACert: "..." 46 | tlsClientCert: "..." 47 | tlsClientKey: "..." 48 | version: 1 49 | # allow users to edit datasources from the UI. 50 | editable: true -------------------------------------------------------------------------------- /weaviate/client/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/ninadingole/docker-compose-stacks/weaviate 2 | 3 | go 1.22.2 4 | toolchain go1.23.7 5 | 6 | require github.com/weaviate/weaviate-go-client/v4 v4.13.1 7 | 8 | require ( 9 | github.com/PuerkitoBio/purell v1.1.1 // indirect 10 | github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect 11 | github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect 12 | github.com/go-openapi/analysis v0.21.2 // indirect 13 | github.com/go-openapi/errors v0.20.3 // indirect 14 | github.com/go-openapi/jsonpointer v0.19.5 // indirect 15 | github.com/go-openapi/jsonreference v0.19.6 // indirect 16 | github.com/go-openapi/loads v0.21.1 // indirect 17 | github.com/go-openapi/spec v0.20.4 // indirect 18 | github.com/go-openapi/strfmt v0.21.3 // indirect 19 | github.com/go-openapi/swag v0.22.3 // indirect 20 | github.com/go-openapi/validate v0.21.0 // indirect 21 | github.com/golang/protobuf v1.5.3 // indirect 22 | github.com/josharian/intern v1.0.0 // indirect 23 | github.com/mailru/easyjson v0.7.7 // indirect 24 | github.com/mitchellh/mapstructure v1.5.0 // indirect 25 | github.com/oklog/ulid v1.3.1 // indirect 26 | github.com/pkg/errors v0.9.1 // indirect 27 | github.com/weaviate/weaviate v1.24.1 // indirect 28 | go.mongodb.org/mongo-driver v1.11.3 // indirect 29 | golang.org/x/net v0.36.0 // indirect 30 | golang.org/x/oauth2 v0.13.0 // indirect 31 | golang.org/x/sys v0.30.0 // indirect 32 | golang.org/x/text v0.22.0 // indirect 33 | google.golang.org/appengine v1.6.8 // indirect 34 | google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect 35 | google.golang.org/grpc v1.59.0 // indirect 36 | google.golang.org/protobuf v1.33.0 // indirect 37 | gopkg.in/yaml.v3 v3.0.1 // indirect 38 | ) 39 | -------------------------------------------------------------------------------- /metabase/README.md: -------------------------------------------------------------------------------- 1 | # Metabase Docker Compose Configuration 2 | 3 | This Docker Compose configuration allows you to set up [Metabase](https://www.metabase.com/) along with a PostgreSQL database. 4 | 5 | ## Version 6 | 7 | This configuration is designed for Metabase version 3.9. 8 | 9 | ## Services 10 | 11 | ### Metabase 12 | 13 | - **Image**: metabase/metabase:latest 14 | - **Container Name**: metabase 15 | - **Hostname**: metabase 16 | - **Volumes**: 17 | - `/dev/urandom:/dev/random:ro` 18 | - **Ports**: 19 | - `3000:3000` 20 | - **Environment Variables**: 21 | - `MB_DB_TYPE`: postgres 22 | - `MB_DB_DBNAME`: metabase 23 | - `MB_DB_PORT`: 5432 24 | - `MB_DB_USER_FILE`: /run/secrets/db_user 25 | - `MB_DB_PASS_FILE`: /run/secrets/db_password 26 | - `MB_DB_HOST`: postgres 27 | - **Network**: metanet1 28 | - **Secrets**: 29 | - db_password 30 | - db_user 31 | - **Healthcheck**: 32 | - Test: `curl --fail -I http://localhost:3000/api/health || exit 1` 33 | - Interval: 15s 34 | - Timeout: 5s 35 | - Retries: 5 36 | 37 | ### PostgreSQL 38 | 39 | - **Image**: postgres:latest 40 | - **Container Name**: postgres 41 | - **Hostname**: postgres 42 | - **Environment Variables**: 43 | - `POSTGRES_USER_FILE`: /run/secrets/db_user 44 | - `POSTGRES_DB`: metabase 45 | - `POSTGRES_PASSWORD_FILE`: /run/secrets/db_password 46 | - **Network**: metanet1 47 | - **Secrets**: 48 | - db_password 49 | - db_user 50 | 51 | ## Networks 52 | 53 | - **Name**: metanet1 54 | - **Driver**: bridge 55 | 56 | ## Secrets 57 | 58 | ### db_password 59 | 60 | - **File**: db_password.txt 61 | 62 | ### db_user 63 | 64 | - **File**: db_user.txt 65 | 66 | ## Usage 67 | 68 | 1. Make sure you have Docker and Docker Compose installed on your system. 69 | 2. Create the `db_password.txt` and `db_user.txt` files with your PostgreSQL password and username, respectively. 70 | 3. Run the following command to start Metabase and PostgreSQL: 71 | 72 | ```bash 73 | docker-compose up -d 74 | -------------------------------------------------------------------------------- /kafka/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.9' 2 | 3 | services: 4 | zookeeper-kafka: 5 | image: confluentinc/cp-zookeeper:latest 6 | ports: 7 | - '2181:2181' 8 | environment: 9 | ZOOKEEPER_CLIENT_PORT: 2181 10 | ZOOKEEPER_TICK_TIME: 2000 11 | healthcheck: 12 | # fake healthcheck just to have one to simplify status check 13 | test: ['CMD', 'date'] 14 | interval: 10s 15 | timeout: 5s 16 | retries: 5 17 | # docs at: https://registry.hub.docker.com/r/wurstmeister/kafka 18 | kafka: 19 | image: wurstmeister/kafka:latest 20 | restart: always 21 | depends_on: 22 | - zookeeper-kafka 23 | ports: 24 | - '9092:9092' 25 | volumes: 26 | # It's the only way to deal with Kafka non-static exposed ports to host 27 | # See: https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh#L65-L76 28 | - /var/run/docker.sock:/var/run/docker.sock 29 | environment: 30 | KAFKA_BROKER_ID: 1 31 | KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-kafka:2181' 32 | PORT_COMMAND: 'docker port $$(hostname) 9092/tcp | cut -d: -f2' 33 | KAFKA_LISTENERS: 'LISTENER_INTERNAL://kafka:29092,LISTENER_HOST://:9092' 34 | KAFKA_ADVERTISED_LISTENERS: LISTENER_INTERNAL://kafka:29092,LISTENER_HOST://localhost:_{PORT_COMMAND} 35 | KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_INTERNAL:PLAINTEXT,LISTENER_HOST:PLAINTEXT 36 | KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_INTERNAL 37 | KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' 38 | KAFKA_CREATE_TOPICS: 'test:1:1' 39 | healthcheck: 40 | test: 41 | [ 42 | 'CMD', 43 | '/opt/kafka/bin/kafka-topics.sh', 44 | '--list', 45 | '--bootstrap-server', 46 | 'kafka:29092', 47 | ] 48 | interval: 10s 49 | timeout: 5s 50 | retries: 5 51 | 52 | kafka-ui: 53 | container_name: kafka-ui 54 | image: provectuslabs/kafka-ui:latest 55 | ports: 56 | - "8080:8080" 57 | depends_on: 58 | - zookeeper-kafka 59 | - kafka 60 | environment: 61 | KAFKA_CLUSTERS_0_NAME: local 62 | KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 63 | KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper-kafka:2181 64 | KAFKA_CLUSTERS_0_JMXPORT: 9997 65 | -------------------------------------------------------------------------------- /prometheus-grafana/prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | # my global config 2 | global: 3 | scrape_interval: 15s # By default, scrape targets every 15 seconds. 4 | evaluation_interval: 15s # By default, scrape targets every 15 seconds. 5 | # scrape_timeout is set to the global default (10s). 6 | 7 | # Attach these labels to any time series or alerts when communicating with 8 | # external systems (federation, remote storage, Alertmanager). 9 | external_labels: 10 | monitor: 'my-project' 11 | 12 | # Load and evaluate rules in this file every 'evaluation_interval' seconds. 13 | rule_files: 14 | - 'alert.rules' 15 | # - "first.rules" 16 | # - "second.rules" 17 | 18 | # alert 19 | alerting: 20 | alertmanagers: 21 | - scheme: http 22 | static_configs: 23 | - targets: 24 | - "alertmanager:9093" 25 | 26 | # A scrape configuration containing exactly one endpoint to scrape: 27 | # Here it's Prometheus itself. 28 | scrape_configs: 29 | # The job name is added as a label `job=` to any timeseries scraped from this config. 30 | 31 | - job_name: app 32 | scrape_interval: 5s 33 | static_configs: 34 | - targets: ['host.docker.internal:8000'] 35 | 36 | - job_name: 'prometheus' 37 | 38 | # Override the global default and scrape targets from this job every 5 seconds. 39 | scrape_interval: 5s 40 | 41 | static_configs: 42 | - targets: ['localhost:9090'] 43 | 44 | 45 | - job_name: 'cadvisor' 46 | 47 | # Override the global default and scrape targets from this job every 5 seconds. 48 | scrape_interval: 5s 49 | 50 | dns_sd_configs: 51 | - names: 52 | - 'tasks.cadvisor' 53 | type: 'A' 54 | port: 8080 55 | 56 | # static_configs: 57 | # - targets: ['cadvisor:8080'] 58 | 59 | - job_name: 'node-exporter' 60 | 61 | # Override the global default and scrape targets from this job every 5 seconds. 62 | scrape_interval: 5s 63 | 64 | dns_sd_configs: 65 | - names: 66 | - 'tasks.node-exporter' 67 | type: 'A' 68 | port: 9100 69 | 70 | # - job_name: 'pushgateway' 71 | # scrape_interval: 10s 72 | # dns_sd_configs: 73 | # - names: 74 | # - 'tasks.pushgateway' 75 | # type: 'A' 76 | # port: 9091 77 | 78 | # static_configs: 79 | # - targets: ['node-exporter:9100'] -------------------------------------------------------------------------------- /prometheus-grafana/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | 3 | volumes: 4 | prometheus_data: {} 5 | grafana_data: {} 6 | 7 | services: 8 | prometheus: 9 | image: prom/prometheus 10 | restart: always 11 | volumes: 12 | - ./prometheus:/etc/prometheus/ 13 | - prometheus_data:/prometheus 14 | command: 15 | - '--config.file=/etc/prometheus/prometheus.yml' 16 | - '--storage.tsdb.path=/prometheus' 17 | - '--web.console.libraries=/usr/share/prometheus/console_libraries' 18 | - '--web.console.templates=/usr/share/prometheus/consoles' 19 | ports: 20 | - 9090:9090 21 | links: 22 | - cadvisor:cadvisor 23 | - alertmanager:alertmanager 24 | depends_on: 25 | - cadvisor 26 | 27 | node-exporter: 28 | image: prom/node-exporter 29 | volumes: 30 | - /proc:/host/proc:ro 31 | - /sys:/host/sys:ro 32 | - /:/rootfs:ro 33 | command: 34 | - '--path.procfs=/host/proc' 35 | - '--path.sysfs=/host/sys' 36 | - --collector.filesystem.ignored-mount-points 37 | - '^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)' 38 | ports: 39 | - 9100:9100 40 | restart: always 41 | deploy: 42 | mode: global 43 | 44 | alertmanager: 45 | image: prom/alertmanager 46 | restart: always 47 | ports: 48 | - 9093:9093 49 | volumes: 50 | - ./alertmanager/:/etc/alertmanager/ 51 | command: 52 | - '--config.file=/etc/alertmanager/config.yml' 53 | - '--storage.path=/alertmanager' 54 | 55 | cadvisor: 56 | image: gcr.io/cadvisor/cadvisor 57 | volumes: 58 | - /:/rootfs:ro 59 | - /var/run:/var/run:rw 60 | - /sys:/sys:ro 61 | - /var/lib/docker/:/var/lib/docker:ro 62 | ports: 63 | - 8080:8080 64 | restart: always 65 | deploy: 66 | mode: global 67 | 68 | grafana: 69 | image: grafana/grafana 70 | user: '472' 71 | restart: always 72 | environment: 73 | GF_INSTALL_PLUGINS: 'grafana-clock-panel,grafana-simple-json-datasource' 74 | volumes: 75 | - grafana_data:/var/lib/grafana 76 | - ./grafana/provisioning/:/etc/grafana/provisioning/ 77 | env_file: 78 | - ./grafana/config.monitoring 79 | ports: 80 | - 3000:3000 81 | depends_on: 82 | - prometheus 83 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Awesome Docker Compose 2 | --- 3 | 4 | ## What is this? 5 | 6 | This is a collection of docker compose stacks for daily software development work. 7 | It becomes handy when you want to run a stack of docker containers and you don't want to write a docker compose file for 8 | it. 9 | There are many docker compose files available on the internet but they are not well maintained and they are not up to 10 | date. 11 | This repository is a collection of docker compose files that are well maintained and up to date. 12 | 13 | ## What is docker compose? 14 | 15 | Docker compose is a tool for defining and running multi-container Docker applications. 16 | 17 | ## How to use? 18 | 19 | Clone this repository and run the docker compose file inside the directory. 20 | 21 | Example: 22 | 23 | Inside directory e.g. `sonarqube` 24 | 25 | ``` 26 | sonarqube $> docker-compose up 27 | ``` 28 | 29 | use `-d` to start compose in detach mode 30 | 31 | ## Stacks 32 | 33 | | Stack | Standalone | Cluster | 34 | |------------------------------------------|------------|---------| 35 | | Apache Kafka | ✅ | ✅ | 36 | | Apache Kafka Kraft | ✅ | | 37 | | Debezium - Postgres | ✅ | | 38 | | Debezium - MySQL | ✅ | | 39 | | Jaeger | ✅ | | 40 | | [Metabase](./metabase/README.md) | ✅ | | 41 | | Postgres | ✅ | ✅ | 42 | | Prometheus + Grafana | ✅ | | 43 | | Prometheus Push Gateway | ✅ | | 44 | | [ScyllaDB](./scylladb/Readme.md) | ✅ | ✅ | 45 | | SonarQube | ✅ | | 46 | | [CouchDB](./couchdb/README.md) | ✅ | ✅ | 47 | | [Weaviate](./weaviate/README.md) | ✅ | | 48 | | [Redis](./redis/README.md) [In-Progress] | ✅ | | 49 | | KSQLDB [Planned] | | | 50 | | MySQL [Planned] | | | 51 | | MongoDB [Planned] | | | 52 | | CockroachDB [Planned] | | | 53 | | [Jenkins](./jenkins/README.md) | ✅ | | 54 | 55 | ## How to contribute 56 | 57 | Raise a pull request if you are using docker compose stack and automated it for your daily software development work. 58 | Happy to review and merge! 59 | Cheers :D 60 | 61 | ### 62 | 63 | Thanks to [Bitnami](https://bitnami.com/) for providing the docker images for some of the stacks. 64 | -------------------------------------------------------------------------------- /scylladb/Readme.md: -------------------------------------------------------------------------------- 1 | ![scylladb](./img/logo.png) 2 | 3 | 4 | # ScyllaDB 5 | 6 | ScyllaDB is a NoSQL database management system that is compatible with Apache Cassandra. 7 | It is designed to scale linearly across multiple commodity servers, while maintaining low latency and high availability. 8 | ScyllaDB is written in C++ and uses the Seastar framework for concurrency and asynchronous I/O. 9 | 10 | 11 | ## Prerequisites 12 | - Docker 13 | - Docker Compose 14 | 15 | 16 | ## Running the Stack 17 | 18 | ### Standalone 19 | 20 | Inside the `standalone` directory, run `docker-compose up` to start the connector. 21 | 22 | ### Port Configurations 23 | 24 | - `9042` - ScyllaDB CQL port 25 | - `9160` - ScyllaDB Thrift port 26 | - `7004` - ScyllaDB Inter-node communication (RPC) 27 | - `7005` - ScyllaDB Inter-node communication (SSL) 28 | - `10000` - Scylla REST API 29 | 30 | 31 | ### Cluster 32 | 33 | Inside the `cluster` directory, run `docker-compose up` to start the connector. 34 | 35 | #### Port Configurations 36 | 37 | Master 38 | 39 | - `9042` - ScyllaDB CQL port 40 | - `9160` - ScyllaDB Thrift port 41 | - `7004` - ScyllaDB Inter-node communication (RPC) 42 | - `7005` - ScyllaDB Inter-node communication (SSL) 43 | - `10000` - Scylla REST API 44 | 45 | Node 1 46 | 47 | - `9043` - ScyllaDB CQL port 48 | - `9161` - ScyllaDB Thrift port 49 | - `7006` - ScyllaDB Inter-node communication (RPC) 50 | - `7007` - ScyllaDB Inter-node communication (SSL) 51 | - `10001` - Scylla REST API 52 | 53 | **Cluster Status:** 54 | 55 | run `docker-compose exec scylladb-master nodetool status` to view the cluster status. 56 | 57 | ```go 58 | Datacenter: datacenter1 59 | ======================= 60 | Status=Up/Down 61 | |/ State=Normal/Leaving/Joining/Moving 62 | -- Address Load Tokens Owns Host ID Rack 63 | UN 172.27.0.3 2.07 MB 256 ? a899f085-0437-444a-80fe-158958a8796b rack1 64 | UN 172.27.0.2 2.02 MB 256 ? 2910746d-e5f2-4a28-a63d-a089cdcb0438 rack1 65 | 66 | Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless 67 | ``` 68 | 69 | **Cluster Topology:** 70 | 71 | run `docker-compose exec scylladb-master nodetool describecluster` to view the cluster topology. 72 | 73 | ```go 74 | Cluster Information: 75 | Name: Test Cluster 76 | Snitch: org.apache.cassandra.locator.SimpleSnitch 77 | DynamicEndPointSnitch: disabled 78 | Partitioner: org.apache.cassandra.dht.Murmur3Partitioner 79 | Schema versions: 80 | f99fb55d-f298-30d6-bd75-31f9855362c2: [172.29.0.2, 172.29.0.3] 81 | ``` 82 | 83 | **Cluster Info:** 84 | 85 | run `docker-compose exec scylladb-master nodetool info` to view the cluster info. 86 | 87 | ```go 88 | ID : eb720697-ac71-413c-a843-748527cff616 89 | Gossip active : true 90 | Thrift active : false 91 | Native Transport active: true 92 | Load : 524 KB 93 | Generation No : 1679584265 94 | Uptime (seconds) : 139 95 | Heap Memory (MB) : 14.16 / 247.50 96 | Off Heap Memory (MB) : 4.65 97 | Data Center : datacenter1 98 | Rack : rack1 99 | Exceptions : 0 100 | Key Cache : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, 0.000 recent hit rate, 0 save period in seconds 101 | Row Cache : entries 13, size 13 bytes, capacity 154.2 KiB, 271 hits, 271 requests, 1.000 recent hit rate, 0 save period in seconds 102 | Counter Cache : entries 0, size 0 bytes, capacity 0 bytes, 0 hits, 0 requests, 0.000 recent hit rate, 0 save period in seconds 103 | Percent Repaired : 0.0% 104 | Token : (invoke with -T/--tokens to see all 256 tokens) 105 | ``` 106 | 107 | ## CQLSH 108 | 109 | CQLSH is a command line tool for interacting with ScyllaDB. 110 | 111 | ### Usage 112 | 113 | ```go 114 | docker-compose exec <> cqlsh 115 | ``` 116 | -------------------------------------------------------------------------------- /debezium/postgres/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | zookeeper: 5 | image: confluentinc/cp-zookeeper:7.3.1 6 | hostname: zookeeper 7 | container_name: zookeeper 8 | ports: 9 | - "2181:2181" 10 | environment: 11 | ZOOKEEPER_CLIENT_PORT: 2181 12 | ZOOKEEPER_TICK_TIME: 2000 13 | healthcheck: 14 | test: echo srvr | nc zookeeper 2181 || exit 1 15 | start_period: 10s 16 | retries: 20 17 | interval: 10s 18 | broker: 19 | image: confluentinc/cp-kafka:7.3.1 20 | hostname: broker 21 | container_name: broker 22 | depends_on: 23 | zookeeper: 24 | condition: service_healthy 25 | ports: 26 | - "29092:29092" 27 | - "9092:9092" 28 | - "9101:9101" 29 | environment: 30 | KAFKA_BROKER_ID: 1 31 | KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181' 32 | KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT 33 | KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://broker:29092,PLAINTEXT_HOST://localhost:9092 34 | KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 35 | KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 36 | KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 37 | KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 38 | KAFKA_AUTO_CREATE_TOPICS_ENABLE: "true" 39 | KAFKA_JMX_PORT: 9101 40 | KAFKA_JMX_HOSTNAME: localhost 41 | healthcheck: 42 | test: nc -z localhost 9092 || exit -1 43 | start_period: 15s 44 | interval: 5s 45 | timeout: 10s 46 | retries: 10 47 | debezium: 48 | image: debezium/connect:latest 49 | restart: always 50 | container_name: debezium 51 | hostname: debezium 52 | depends_on: 53 | postgres: 54 | condition: service_healthy 55 | broker: 56 | condition: service_healthy 57 | ports: 58 | - "8083:8083" 59 | environment: 60 | BOOTSTRAP_SERVERS: broker:29092 61 | GROUP_ID: 1 62 | CONFIG_STORAGE_TOPIC: connect_configs 63 | STATUS_STORAGE_TOPIC: connect_statuses 64 | OFFSET_STORAGE_TOPIC: connect_offsets 65 | KEY_CONVERTER: org.apache.kafka.connect.json.JsonConverter 66 | VALUE_CONVERTER: org.apache.kafka.connect.json.JsonConverter 67 | ENABLE_DEBEZIUM_SCRIPTING: "true" 68 | healthcheck: 69 | test: ["CMD", "curl", "--silent", "--fail", "-X", "GET", "http://localhost:8083/connectors"] 70 | start_period: 10s 71 | interval: 10s 72 | timeout: 5s 73 | retries: 5 74 | 75 | schema-registry: 76 | image: confluentinc/cp-schema-registry:7.3.1 77 | hostname: schema-registry 78 | container_name: schema-registry 79 | depends_on: 80 | broker: 81 | condition: service_healthy 82 | ports: 83 | - "8081:8081" 84 | environment: 85 | SCHEMA_REGISTRY_HOST_NAME: schema-registry 86 | SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: broker:29092 87 | SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 88 | 89 | healthcheck: 90 | start_period: 10s 91 | interval: 10s 92 | retries: 20 93 | test: curl --user superUser:superUser --fail --silent --insecure http://localhost:8081/subjects --output /dev/null || exit 1 94 | 95 | rest-proxy: 96 | image: confluentinc/cp-kafka-rest:7.3.1 97 | depends_on: 98 | broker: 99 | condition: service_healthy 100 | ports: 101 | - "8082:8082" 102 | hostname: rest-proxy 103 | container_name: rest-proxy 104 | environment: 105 | KAFKA_REST_HOST_NAME: rest-proxy 106 | KAFKA_REST_BOOTSTRAP_SERVERS: 'broker:29092' 107 | KAFKA_REST_LISTENERS: "http://0.0.0.0:8082" 108 | 109 | debezium-ui: 110 | image: debezium/debezium-ui:latest 111 | restart: always 112 | container_name: debezium-ui 113 | hostname: debezium-ui 114 | depends_on: 115 | debezium: 116 | condition: service_healthy 117 | ports: 118 | - "8080:8080" 119 | environment: 120 | KAFKA_CONNECT_URIS: http://debezium:8083 121 | 122 | 123 | postgres: 124 | image: postgres:latest 125 | restart: always 126 | container_name: postgres 127 | hostname: postgres 128 | ports: 129 | - "5432:5432" 130 | environment: 131 | POSTGRES_USER: postgres 132 | POSTGRES_PASSWORD: postgres 133 | POSTGRES_DB: movies_db 134 | command: ["postgres", "-c", "wal_level=logical"] 135 | healthcheck: 136 | test: ["CMD", "psql", "-U", "postgres", "-c", "SELECT 1"] 137 | interval: 10s 138 | timeout: 5s 139 | retries: 5 140 | volumes: 141 | - ./scripts:/docker-entrypoint-initdb.d 142 | -------------------------------------------------------------------------------- /kafka/cluster-zk/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | 3 | services: 4 | zookeeper-kafka: 5 | image: confluentinc/cp-zookeeper:latest 6 | ports: 7 | - '2181:2181' 8 | environment: 9 | ZOOKEEPER_CLIENT_PORT: 2181 10 | ZOOKEEPER_TICK_TIME: 2000 11 | healthcheck: 12 | # fake healthcheck just to have one to simplify status check 13 | test: ['CMD', 'date'] 14 | interval: 10s 15 | timeout: 5s 16 | retries: 5 17 | # docs at: https://registry.hub.docker.com/r/wurstmeister/kafka 18 | kafka-broker-1: 19 | image: wurstmeister/kafka:latest 20 | restart: always 21 | depends_on: 22 | - zookeeper-kafka 23 | ports: 24 | - '9092:9092' 25 | volumes: 26 | # It's the only way to deal with Kafka non-static exposed ports to host 27 | # See: https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh#L65-L76 28 | - /var/run/docker.sock:/var/run/docker.sock 29 | environment: 30 | KAFKA_BROKER_ID: 1 31 | KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-kafka:2181' 32 | PORT_COMMAND: 'docker port $$(hostname) 9092/tcp | cut -d: -f2' 33 | KAFKA_LISTENERS: 'LISTENER_INTERNAL://kafka-broker-1:29092,LISTENER_HOST://:9092' 34 | KAFKA_ADVERTISED_LISTENERS: LISTENER_INTERNAL://kafka-broker-1:29092,LISTENER_HOST://localhost:_{PORT_COMMAND} 35 | KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_INTERNAL:PLAINTEXT,LISTENER_HOST:PLAINTEXT 36 | KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_INTERNAL 37 | KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka-broker-1 -Dcom.sun.management.jmxremote.rmi.port=1099" 38 | JMX_PORT: 1099 39 | KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' 40 | KAFKA_CREATE_TOPICS: 'test:3:3' 41 | healthcheck: 42 | test: 43 | [ 44 | 'CMD', 45 | '/opt/kafka/bin/kafka-topics.sh', 46 | '--list', 47 | '--bootstrap-server', 48 | 'kafka-broker-1:29092', 49 | ] 50 | interval: 10s 51 | timeout: 5s 52 | retries: 5 53 | 54 | kafka-broker-2: 55 | image: wurstmeister/kafka:latest 56 | restart: always 57 | depends_on: 58 | - zookeeper-kafka 59 | ports: 60 | - '9093:9092' 61 | volumes: 62 | # It's the only way to deal with Kafka non-static exposed ports to host 63 | # See: https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh#L65-L76 64 | - /var/run/docker.sock:/var/run/docker.sock 65 | environment: 66 | KAFKA_BROKER_ID: 2 67 | KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-kafka:2181' 68 | PORT_COMMAND: 'docker port $$(hostname) 9092/tcp | cut -d: -f2' 69 | KAFKA_LISTENERS: 'LISTENER_INTERNAL://kafka-broker-2:29092,LISTENER_HOST://:9092' 70 | KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka-broker-2 -Dcom.sun.management.jmxremote.rmi.port=1099" 71 | JMX_PORT: 1099 72 | KAFKA_ADVERTISED_LISTENERS: LISTENER_INTERNAL://kafka-broker-2:29092,LISTENER_HOST://localhost:_{PORT_COMMAND} 73 | KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_INTERNAL:PLAINTEXT,LISTENER_HOST:PLAINTEXT 74 | KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_INTERNAL 75 | KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' 76 | healthcheck: 77 | test: 78 | [ 79 | 'CMD', 80 | '/opt/kafka/bin/kafka-topics.sh', 81 | '--list', 82 | '--bootstrap-server', 83 | 'kafka-broker-2:29092', 84 | ] 85 | interval: 10s 86 | timeout: 5s 87 | retries: 5 88 | kafka-broker-3: 89 | image: wurstmeister/kafka:latest 90 | restart: always 91 | depends_on: 92 | - zookeeper-kafka 93 | ports: 94 | - '9094:9092' 95 | volumes: 96 | # It's the only way to deal with Kafka non-static exposed ports to host 97 | # See: https://github.com/wurstmeister/kafka-docker/blob/master/start-kafka.sh#L65-L76 98 | - /var/run/docker.sock:/var/run/docker.sock 99 | environment: 100 | KAFKA_BROKER_ID: 3 101 | KAFKA_ZOOKEEPER_CONNECT: 'zookeeper-kafka:2181' 102 | PORT_COMMAND: 'docker port $$(hostname) 9092/tcp | cut -d: -f2' 103 | KAFKA_LISTENERS: 'LISTENER_INTERNAL://kafka-broker-3:29092,LISTENER_HOST://:9092' 104 | KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=kafka-broker-3 -Dcom.sun.management.jmxremote.rmi.port=1099" 105 | JMX_PORT: 1099 106 | KAFKA_ADVERTISED_LISTENERS: LISTENER_INTERNAL://kafka-broker-3:29092,LISTENER_HOST://localhost:_{PORT_COMMAND} 107 | KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: LISTENER_INTERNAL:PLAINTEXT,LISTENER_HOST:PLAINTEXT 108 | KAFKA_INTER_BROKER_LISTENER_NAME: LISTENER_INTERNAL 109 | KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' 110 | healthcheck: 111 | test: 112 | [ 113 | 'CMD', 114 | '/opt/kafka/bin/kafka-topics.sh', 115 | '--list', 116 | '--bootstrap-server', 117 | 'kafka-broker-3:29092', 118 | ] 119 | interval: 10s 120 | timeout: 5s 121 | retries: 5 122 | 123 | kafka-ui: 124 | container_name: kafka-ui 125 | image: provectuslabs/kafka-ui:latest 126 | ports: 127 | - "8080:8080" 128 | depends_on: 129 | - zookeeper-kafka 130 | - kafka-broker-1 131 | - kafka-broker-2 132 | - kafka-broker-3 133 | environment: 134 | KAFKA_CLUSTERS_0_NAME: local 135 | KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-broker-1:29092, kafka-broker-2:29092, kafka-broker-3:29092 136 | KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper-kafka:2181 137 | KAFKA_CLUSTERS_0_JMXPORT: 1099 138 | -------------------------------------------------------------------------------- /weaviate/client/go.sum: -------------------------------------------------------------------------------- 1 | github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= 2 | github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= 3 | github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= 4 | github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= 5 | github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= 6 | github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= 7 | github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= 8 | github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= 9 | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 10 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 11 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= 12 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 13 | github.com/go-openapi/analysis v0.21.2 h1:hXFrOYFHUAMQdu6zwAiKKJHJQ8kqZs1ux/ru1P1wLJU= 14 | github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= 15 | github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= 16 | github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= 17 | github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= 18 | github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc= 19 | github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= 20 | github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= 21 | github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= 22 | github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= 23 | github.com/go-openapi/jsonreference v0.19.6 h1:UBIxjkht+AWIgYzCDSv2GN+E/togfwXUJFRTWhl2Jjs= 24 | github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= 25 | github.com/go-openapi/loads v0.21.1 h1:Wb3nVZpdEzDTcly8S4HMkey6fjARRzb7iEaySimlDW0= 26 | github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= 27 | github.com/go-openapi/spec v0.20.4 h1:O8hJrt0UMnhHcluhIdUgCLRWyM2x7QkBXRvOs7m+O1M= 28 | github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= 29 | github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= 30 | github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= 31 | github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o= 32 | github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= 33 | github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= 34 | github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= 35 | github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= 36 | github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= 37 | github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= 38 | github.com/go-openapi/validate v0.21.0 h1:+Wqk39yKOhfpLqNLEC0/eViCkzM5FVXVqrvt526+wcI= 39 | github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= 40 | github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 41 | github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= 42 | github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= 43 | github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= 44 | github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= 45 | github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= 46 | github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= 47 | github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= 48 | github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= 49 | github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= 50 | github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= 51 | github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= 52 | github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= 53 | github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= 54 | github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= 55 | github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= 56 | github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= 57 | github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= 58 | github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= 59 | github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= 60 | github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= 61 | github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= 62 | github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= 63 | github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= 64 | github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= 65 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= 66 | github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 67 | github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= 68 | github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= 69 | github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= 70 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 71 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= 72 | github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= 73 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= 74 | github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 75 | github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= 76 | github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 77 | github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= 78 | github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= 79 | github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= 80 | github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= 81 | github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= 82 | github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= 83 | github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= 84 | github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= 85 | github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= 86 | github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= 87 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= 88 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= 89 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= 90 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= 91 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 92 | github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= 93 | github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= 94 | github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= 95 | github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= 96 | github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= 97 | github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= 98 | github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= 99 | github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 100 | github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 101 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= 102 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 103 | github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= 104 | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= 105 | github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= 106 | github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= 107 | github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= 108 | github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 109 | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 110 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= 111 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 112 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= 113 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 114 | github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 115 | github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 116 | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= 117 | github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= 118 | github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= 119 | github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= 120 | github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= 121 | github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 122 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 123 | github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 124 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= 125 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= 126 | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= 127 | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 128 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 129 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= 130 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= 131 | github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= 132 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= 133 | github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= 134 | github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= 135 | github.com/weaviate/weaviate v1.24.1 h1:Cl/NnqgFlNfyC7KcjFtETf1bwtTQPLF3oz5vavs+Jq0= 136 | github.com/weaviate/weaviate v1.24.1/go.mod h1:wcg1vJgdIQL5MWBN+871DFJQa+nI2WzyXudmGjJ8cG4= 137 | github.com/weaviate/weaviate-go-client/v4 v4.13.1 h1:7PuK/hpy6Q0b9XaVGiUg5OD1MI/eF2ew9CJge9XdBEE= 138 | github.com/weaviate/weaviate-go-client/v4 v4.13.1/go.mod h1:B2m6g77xWDskrCq1GlU6CdilS0RG2+YXEgzwXRADad0= 139 | github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= 140 | github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= 141 | github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= 142 | github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= 143 | github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= 144 | github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= 145 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= 146 | go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= 147 | go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= 148 | go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= 149 | go.mongodb.org/mongo-driver v1.11.3 h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y= 150 | go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= 151 | golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 152 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 153 | golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= 154 | golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= 155 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= 156 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= 157 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= 158 | golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 159 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= 160 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= 161 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= 162 | golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= 163 | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 164 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= 165 | golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA= 166 | golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I= 167 | golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= 168 | golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= 169 | golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 170 | golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 171 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 172 | golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 173 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 174 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= 175 | golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 176 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= 177 | golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 178 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 179 | golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 180 | golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 181 | golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 182 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 183 | golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 184 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 185 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 186 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 187 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 188 | golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= 189 | golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 190 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 191 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= 192 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= 193 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 194 | golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 195 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= 196 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= 197 | golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= 198 | golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= 199 | golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= 200 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= 201 | golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 202 | golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 203 | golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= 204 | golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= 205 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= 206 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= 207 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 208 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= 209 | google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= 210 | google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= 211 | google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d h1:uvYuEyMHKNt+lT4K3bN6fGswmK8qSvcreM3BwjDh+y4= 212 | google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= 213 | google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= 214 | google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= 215 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= 216 | google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= 217 | google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= 218 | google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 219 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 220 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 221 | gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 222 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= 223 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= 224 | gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= 225 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 226 | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 227 | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= 228 | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= 229 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 230 | gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 231 | gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 232 | gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 233 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= 234 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= 235 | -------------------------------------------------------------------------------- /postgres/replication/master.conf: -------------------------------------------------------------------------------- 1 | # ----------------------------- 2 | # PostgreSQL configuration file 3 | # ----------------------------- 4 | # 5 | # This file consists of lines of the form: 6 | # 7 | # name = value 8 | # 9 | # (The "=" is optional.) Whitespace may be used. Comments are introduced with 10 | # "#" anywhere on a line. The complete list of parameter names and allowed 11 | # values can be found in the PostgreSQL documentation. 12 | # 13 | # The commented-out settings shown in this file represent the default values. 14 | # Re-commenting a setting is NOT sufficient to revert it to the default value; 15 | # you need to reload the server. 16 | # 17 | # This file is read on server startup and when the server receives a SIGHUP 18 | # signal. If you edit the file on a running system, you have to SIGHUP the 19 | # server for the changes to take effect, run "pg_ctl reload", or execute 20 | # "SELECT pg_reload_conf()". Some parameters, which are marked below, 21 | # require a server shutdown and restart to take effect. 22 | # 23 | # Any parameter can also be given as a command-line option to the server, e.g., 24 | # "postgres -c log_connections=on". Some parameters can be changed at run time 25 | # with the "SET" SQL command. 26 | # 27 | # Memory units: B = bytes Time units: us = microseconds 28 | # kB = kilobytes ms = milliseconds 29 | # MB = megabytes s = seconds 30 | # GB = gigabytes min = minutes 31 | # TB = terabytes h = hours 32 | # d = days 33 | 34 | 35 | #------------------------------------------------------------------------------ 36 | # FILE LOCATIONS 37 | #------------------------------------------------------------------------------ 38 | 39 | # The default values of these variables are driven from the -D command-line 40 | # option or PGDATA environment variable, represented here as ConfigDir. 41 | 42 | #data_directory = 'ConfigDir' # use data in another directory 43 | # (change requires restart) 44 | #hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file 45 | # (change requires restart) 46 | #ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file 47 | # (change requires restart) 48 | 49 | # If external_pid_file is not explicitly set, no extra PID file is written. 50 | #external_pid_file = '' # write an extra PID file 51 | # (change requires restart) 52 | 53 | 54 | #------------------------------------------------------------------------------ 55 | # CONNECTIONS AND AUTHENTICATION 56 | #------------------------------------------------------------------------------ 57 | 58 | # - Connection Settings - 59 | 60 | listen_addresses = '*' 61 | # comma-separated list of addresses; 62 | # defaults to 'localhost'; use '*' for all 63 | # (change requires restart) 64 | #port = 5432 # (change requires restart) 65 | #max_connections = 100 # (change requires restart) 66 | #superuser_reserved_connections = 3 # (change requires restart) 67 | #unix_socket_directories = '/tmp' # comma-separated list of directories 68 | # (change requires restart) 69 | #unix_socket_group = '' # (change requires restart) 70 | #unix_socket_permissions = 0777 # begin with 0 to use octal notation 71 | # (change requires restart) 72 | #bonjour = off # advertise server via Bonjour 73 | # (change requires restart) 74 | #bonjour_name = '' # defaults to the computer name 75 | # (change requires restart) 76 | 77 | # - TCP settings - 78 | # see "man tcp" for details 79 | 80 | #tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; 81 | # 0 selects the system default 82 | #tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; 83 | # 0 selects the system default 84 | #tcp_keepalives_count = 0 # TCP_KEEPCNT; 85 | # 0 selects the system default 86 | #tcp_user_timeout = 0 # TCP_USER_TIMEOUT, in milliseconds; 87 | # 0 selects the system default 88 | 89 | #client_connection_check_interval = 0 # time between checks for client 90 | # disconnection while running queries; 91 | # 0 for never 92 | 93 | # - Authentication - 94 | 95 | #authentication_timeout = 1min # 1s-600s 96 | #password_encryption = scram-sha-256 # scram-sha-256 or md5 97 | #db_user_namespace = off 98 | 99 | # GSSAPI using Kerberos 100 | #krb_server_keyfile = 'FILE:${sysconfdir}/krb5.keytab' 101 | #krb_caseins_users = off 102 | 103 | # - SSL - 104 | 105 | #ssl = off 106 | #ssl_ca_file = '' 107 | #ssl_cert_file = 'server.crt' 108 | #ssl_crl_file = '' 109 | #ssl_crl_dir = '' 110 | #ssl_key_file = 'server.key' 111 | #ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers 112 | #ssl_prefer_server_ciphers = on 113 | #ssl_ecdh_curve = 'prime256v1' 114 | #ssl_min_protocol_version = 'TLSv1.2' 115 | #ssl_max_protocol_version = '' 116 | #ssl_dh_params_file = '' 117 | #ssl_passphrase_command = '' 118 | #ssl_passphrase_command_supports_reload = off 119 | 120 | 121 | #------------------------------------------------------------------------------ 122 | # RESOURCE USAGE (except WAL) 123 | #------------------------------------------------------------------------------ 124 | 125 | # - Memory - 126 | 127 | #shared_buffers = 32MB # min 128kB 128 | # (change requires restart) 129 | #huge_pages = try # on, off, or try 130 | # (change requires restart) 131 | #huge_page_size = 0 # zero for system default 132 | # (change requires restart) 133 | #temp_buffers = 8MB # min 800kB 134 | #max_prepared_transactions = 0 # zero disables the feature 135 | # (change requires restart) 136 | # Caution: it is not advisable to set max_prepared_transactions nonzero unless 137 | # you actively intend to use prepared transactions. 138 | #work_mem = 4MB # min 64kB 139 | #hash_mem_multiplier = 1.0 # 1-1000.0 multiplier on hash table work_mem 140 | #maintenance_work_mem = 64MB # min 1MB 141 | #autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem 142 | #logical_decoding_work_mem = 64MB # min 64kB 143 | #max_stack_depth = 2MB # min 100kB 144 | #shared_memory_type = mmap # the default is the first option 145 | # supported by the operating system: 146 | # mmap 147 | # sysv 148 | # windows 149 | # (change requires restart) 150 | #dynamic_shared_memory_type = posix # the default is the first option 151 | # supported by the operating system: 152 | # posix 153 | # sysv 154 | # windows 155 | # mmap 156 | # (change requires restart) 157 | #min_dynamic_shared_memory = 0MB # (change requires restart) 158 | 159 | # - Disk - 160 | 161 | #temp_file_limit = -1 # limits per-process temp file space 162 | # in kilobytes, or -1 for no limit 163 | 164 | # - Kernel Resources - 165 | 166 | #max_files_per_process = 1000 # min 64 167 | # (change requires restart) 168 | 169 | # - Cost-Based Vacuum Delay - 170 | 171 | #vacuum_cost_delay = 0 # 0-100 milliseconds (0 disables) 172 | #vacuum_cost_page_hit = 1 # 0-10000 credits 173 | #vacuum_cost_page_miss = 2 # 0-10000 credits 174 | #vacuum_cost_page_dirty = 20 # 0-10000 credits 175 | #vacuum_cost_limit = 200 # 1-10000 credits 176 | 177 | # - Background Writer - 178 | 179 | #bgwriter_delay = 200ms # 10-10000ms between rounds 180 | #bgwriter_lru_maxpages = 100 # max buffers written/round, 0 disables 181 | #bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round 182 | #bgwriter_flush_after = 0 # measured in pages, 0 disables 183 | 184 | # - Asynchronous Behavior - 185 | 186 | #backend_flush_after = 0 # measured in pages, 0 disables 187 | #effective_io_concurrency = 1 # 1-1000; 0 disables prefetching 188 | #maintenance_io_concurrency = 10 # 1-1000; 0 disables prefetching 189 | #max_worker_processes = 8 # (change requires restart) 190 | #max_parallel_workers_per_gather = 2 # taken from max_parallel_workers 191 | #max_parallel_maintenance_workers = 2 # taken from max_parallel_workers 192 | #max_parallel_workers = 8 # maximum number of max_worker_processes that 193 | # can be used in parallel operations 194 | #parallel_leader_participation = on 195 | #old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate 196 | # (change requires restart) 197 | 198 | 199 | #------------------------------------------------------------------------------ 200 | # WRITE-AHEAD LOG 201 | #------------------------------------------------------------------------------ 202 | 203 | # - Settings - 204 | 205 | wal_level = logical # minimal, replica, or logical 206 | # (change requires restart) 207 | #fsync = on # flush data to disk for crash safety 208 | # (turning this off can cause 209 | # unrecoverable data corruption) 210 | #synchronous_commit = on # synchronization level; 211 | # off, local, remote_write, remote_apply, or on 212 | #wal_sync_method = fsync # the default is the first option 213 | # supported by the operating system: 214 | # open_datasync 215 | # fdatasync (default on Linux and FreeBSD) 216 | # fsync 217 | # fsync_writethrough 218 | # open_sync 219 | #full_page_writes = on # recover from partial page writes 220 | #wal_log_hints = off # also do full page writes of non-critical updates 221 | # (change requires restart) 222 | #wal_compression = off # enable compression of full-page writes 223 | #wal_init_zero = on # zero-fill new WAL files 224 | #wal_recycle = on # recycle WAL files 225 | #wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers 226 | # (change requires restart) 227 | #wal_writer_delay = 200ms # 1-10000 milliseconds 228 | #wal_writer_flush_after = 1MB # measured in pages, 0 disables 229 | #wal_skip_threshold = 2MB 230 | 231 | #commit_delay = 0 # range 0-100000, in microseconds 232 | #commit_siblings = 5 # range 1-1000 233 | 234 | # - Checkpoints - 235 | 236 | #checkpoint_timeout = 5min # range 30s-1d 237 | #checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0 238 | #checkpoint_flush_after = 0 # measured in pages, 0 disables 239 | #checkpoint_warning = 30s # 0 disables 240 | #max_wal_size = 1GB 241 | #min_wal_size = 80MB 242 | 243 | # - Archiving - 244 | 245 | #archive_mode = off # enables archiving; off, on, or always 246 | # (change requires restart) 247 | #archive_command = '' # command to use to archive a logfile segment 248 | # placeholders: %p = path of file to archive 249 | # %f = file name only 250 | # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' 251 | #archive_timeout = 0 # force a logfile segment switch after this 252 | # number of seconds; 0 disables 253 | 254 | # - Archive Recovery - 255 | 256 | # These are only used in recovery mode. 257 | 258 | #restore_command = '' # command to use to restore an archived logfile segment 259 | # placeholders: %p = path of file to restore 260 | # %f = file name only 261 | # e.g. 'cp /mnt/server/archivedir/%f %p' 262 | #archive_cleanup_command = '' # command to execute at every restartpoint 263 | #recovery_end_command = '' # command to execute at completion of recovery 264 | 265 | # - Recovery Target - 266 | 267 | # Set these only when performing a targeted recovery. 268 | 269 | #recovery_target = '' # 'immediate' to end recovery as soon as a 270 | # consistent state is reached 271 | # (change requires restart) 272 | #recovery_target_name = '' # the named restore point to which recovery will proceed 273 | # (change requires restart) 274 | #recovery_target_time = '' # the time stamp up to which recovery will proceed 275 | # (change requires restart) 276 | #recovery_target_xid = '' # the transaction ID up to which recovery will proceed 277 | # (change requires restart) 278 | #recovery_target_lsn = '' # the WAL LSN up to which recovery will proceed 279 | # (change requires restart) 280 | #recovery_target_inclusive = on # Specifies whether to stop: 281 | # just after the specified recovery target (on) 282 | # just before the recovery target (off) 283 | # (change requires restart) 284 | #recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID 285 | # (change requires restart) 286 | #recovery_target_action = 'pause' # 'pause', 'promote', 'shutdown' 287 | # (change requires restart) 288 | 289 | 290 | #------------------------------------------------------------------------------ 291 | # REPLICATION 292 | #------------------------------------------------------------------------------ 293 | 294 | # - Sending Servers - 295 | 296 | # Set these on the primary and on any standby that will send replication data. 297 | 298 | max_wal_senders = 2 # max number of walsender processes 299 | # (change requires restart) 300 | #max_replication_slots = 10 # max number of replication slots 301 | # (change requires restart) 302 | #wal_keep_size = 0 # in megabytes; 0 disables 303 | #max_slot_wal_keep_size = -1 # in megabytes; -1 disables 304 | #wal_sender_timeout = 60s # in milliseconds; 0 disables 305 | #track_commit_timestamp = off # collect timestamp of transaction commit 306 | # (change requires restart) 307 | 308 | # - Primary Server - 309 | 310 | # These settings are ignored on a standby server. 311 | 312 | #synchronous_standby_names = '' # standby servers that provide sync rep 313 | # method to choose sync standbys, number of sync standbys, 314 | # and comma-separated list of application_name 315 | # from standby(s); '*' = all 316 | #vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed 317 | 318 | # - Standby Servers - 319 | 320 | # These settings are ignored on a primary server. 321 | 322 | #primary_conninfo = '' # connection string to sending server 323 | #primary_slot_name = '' # replication slot on sending server 324 | #promote_trigger_file = '' # file name whose presence ends recovery 325 | hot_standby = on # "off" disallows queries during recovery 326 | # (change requires restart) 327 | #max_standby_archive_delay = 30s # max delay before canceling queries 328 | # when reading WAL from archive; 329 | # -1 allows indefinite delay 330 | #max_standby_streaming_delay = 30s # max delay before canceling queries 331 | # when reading streaming WAL; 332 | # -1 allows indefinite delay 333 | #wal_receiver_create_temp_slot = off # create temp slot if primary_slot_name 334 | # is not set 335 | #wal_receiver_status_interval = 10s # send replies at least this often 336 | # 0 disables 337 | #hot_standby_feedback = off # send info from standby to prevent 338 | # query conflicts 339 | #wal_receiver_timeout = 60s # time that receiver waits for 340 | # communication from primary 341 | # in milliseconds; 0 disables 342 | #wal_retrieve_retry_interval = 5s # time to wait before retrying to 343 | # retrieve WAL after a failed attempt 344 | #recovery_min_apply_delay = 0 # minimum delay for applying changes during recovery 345 | 346 | # - Subscribers - 347 | 348 | # These settings are ignored on a publisher. 349 | 350 | max_logical_replication_workers = 4 # taken from max_worker_processes 351 | # (change requires restart) 352 | max_sync_workers_per_subscription = 2 # taken from max_logical_replication_workers 353 | 354 | 355 | #------------------------------------------------------------------------------ 356 | # QUERY TUNING 357 | #------------------------------------------------------------------------------ 358 | 359 | # - Planner Method Configuration - 360 | 361 | #enable_async_append = on 362 | #enable_bitmapscan = on 363 | #enable_gathermerge = on 364 | #enable_hashagg = on 365 | #enable_hashjoin = on 366 | #enable_incremental_sort = on 367 | #enable_indexscan = on 368 | #enable_indexonlyscan = on 369 | #enable_material = on 370 | #enable_memoize = on 371 | #enable_mergejoin = on 372 | #enable_nestloop = on 373 | #enable_parallel_append = on 374 | #enable_parallel_hash = on 375 | #enable_partition_pruning = on 376 | #enable_partitionwise_join = off 377 | #enable_partitionwise_aggregate = off 378 | #enable_seqscan = on 379 | #enable_sort = on 380 | #enable_tidscan = on 381 | 382 | # - Planner Cost Constants - 383 | 384 | #seq_page_cost = 1.0 # measured on an arbitrary scale 385 | #random_page_cost = 4.0 # same scale as above 386 | #cpu_tuple_cost = 0.01 # same scale as above 387 | #cpu_index_tuple_cost = 0.005 # same scale as above 388 | #cpu_operator_cost = 0.0025 # same scale as above 389 | #parallel_setup_cost = 1000.0 # same scale as above 390 | #parallel_tuple_cost = 0.1 # same scale as above 391 | #min_parallel_table_scan_size = 8MB 392 | #min_parallel_index_scan_size = 512kB 393 | #effective_cache_size = 4GB 394 | 395 | #jit_above_cost = 100000 # perform JIT compilation if available 396 | # and query more expensive than this; 397 | # -1 disables 398 | #jit_inline_above_cost = 500000 # inline small functions if query is 399 | # more expensive than this; -1 disables 400 | #jit_optimize_above_cost = 500000 # use expensive JIT optimizations if 401 | # query is more expensive than this; 402 | # -1 disables 403 | 404 | # - Genetic Query Optimizer - 405 | 406 | #geqo = on 407 | #geqo_threshold = 12 408 | #geqo_effort = 5 # range 1-10 409 | #geqo_pool_size = 0 # selects default based on effort 410 | #geqo_generations = 0 # selects default based on effort 411 | #geqo_selection_bias = 2.0 # range 1.5-2.0 412 | #geqo_seed = 0.0 # range 0.0-1.0 413 | 414 | # - Other Planner Options - 415 | 416 | #default_statistics_target = 100 # range 1-10000 417 | #constraint_exclusion = partition # on, off, or partition 418 | #cursor_tuple_fraction = 0.1 # range 0.0-1.0 419 | #from_collapse_limit = 8 420 | #jit = on # allow JIT compilation 421 | #join_collapse_limit = 8 # 1 disables collapsing of explicit 422 | # JOIN clauses 423 | #plan_cache_mode = auto # auto, force_generic_plan or 424 | # force_custom_plan 425 | 426 | 427 | #------------------------------------------------------------------------------ 428 | # REPORTING AND LOGGING 429 | #------------------------------------------------------------------------------ 430 | 431 | # - Where to Log - 432 | 433 | #log_destination = 'stderr' # Valid values are combinations of 434 | # stderr, csvlog, syslog, and eventlog, 435 | # depending on platform. csvlog 436 | # requires logging_collector to be on. 437 | 438 | # This is used when logging to stderr: 439 | #logging_collector = off # Enable capturing of stderr and csvlog 440 | # into log files. Required to be on for 441 | # csvlogs. 442 | # (change requires restart) 443 | 444 | # These are only used if logging_collector is on: 445 | #log_directory = 'log' # directory where log files are written, 446 | # can be absolute or relative to PGDATA 447 | #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, 448 | # can include strftime() escapes 449 | #log_file_mode = 0600 # creation mode for log files, 450 | # begin with 0 to use octal notation 451 | #log_rotation_age = 1d # Automatic rotation of logfiles will 452 | # happen after that time. 0 disables. 453 | #log_rotation_size = 10MB # Automatic rotation of logfiles will 454 | # happen after that much log output. 455 | # 0 disables. 456 | #log_truncate_on_rotation = off # If on, an existing log file with the 457 | # same name as the new log file will be 458 | # truncated rather than appended to. 459 | # But such truncation only occurs on 460 | # time-driven rotation, not on restarts 461 | # or size-driven rotation. Default is 462 | # off, meaning append to existing files 463 | # in all cases. 464 | 465 | # These are relevant when logging to syslog: 466 | #syslog_facility = 'LOCAL0' 467 | #syslog_ident = 'postgres' 468 | #syslog_sequence_numbers = on 469 | #syslog_split_messages = on 470 | 471 | # This is only relevant when logging to eventlog (Windows): 472 | # (change requires restart) 473 | #event_source = 'PostgreSQL' 474 | 475 | # - When to Log - 476 | 477 | #log_min_messages = warning # values in order of decreasing detail: 478 | # debug5 479 | # debug4 480 | # debug3 481 | # debug2 482 | # debug1 483 | # info 484 | # notice 485 | # warning 486 | # error 487 | # log 488 | # fatal 489 | # panic 490 | 491 | #log_min_error_statement = error # values in order of decreasing detail: 492 | # debug5 493 | # debug4 494 | # debug3 495 | # debug2 496 | # debug1 497 | # info 498 | # notice 499 | # warning 500 | # error 501 | # log 502 | # fatal 503 | # panic (effectively off) 504 | 505 | #log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements 506 | # and their durations, > 0 logs only 507 | # statements running at least this number 508 | # of milliseconds 509 | 510 | #log_min_duration_sample = -1 # -1 is disabled, 0 logs a sample of statements 511 | # and their durations, > 0 logs only a sample of 512 | # statements running at least this number 513 | # of milliseconds; 514 | # sample fraction is determined by log_statement_sample_rate 515 | 516 | #log_statement_sample_rate = 1.0 # fraction of logged statements exceeding 517 | # log_min_duration_sample to be logged; 518 | # 1.0 logs all such statements, 0.0 never logs 519 | 520 | 521 | #log_transaction_sample_rate = 0.0 # fraction of transactions whose statements 522 | # are logged regardless of their duration; 1.0 logs all 523 | # statements from all transactions, 0.0 never logs 524 | 525 | # - What to Log - 526 | 527 | #debug_print_parse = off 528 | #debug_print_rewritten = off 529 | #debug_print_plan = off 530 | #debug_pretty_print = on 531 | #log_autovacuum_min_duration = -1 # log autovacuum activity; 532 | # -1 disables, 0 logs all actions and 533 | # their durations, > 0 logs only 534 | # actions running at least this number 535 | # of milliseconds. 536 | #log_checkpoints = off 537 | #log_connections = off 538 | #log_disconnections = off 539 | #log_duration = off 540 | #log_error_verbosity = default # terse, default, or verbose messages 541 | #log_hostname = off 542 | #log_line_prefix = '%m [%p] ' # special values: 543 | # %a = application name 544 | # %u = user name 545 | # %d = database name 546 | # %r = remote host and port 547 | # %h = remote host 548 | # %b = backend type 549 | # %p = process ID 550 | # %P = process ID of parallel group leader 551 | # %t = timestamp without milliseconds 552 | # %m = timestamp with milliseconds 553 | # %n = timestamp with milliseconds (as a Unix epoch) 554 | # %Q = query ID (0 if none or not computed) 555 | # %i = command tag 556 | # %e = SQL state 557 | # %c = session ID 558 | # %l = session line number 559 | # %s = session start timestamp 560 | # %v = virtual transaction ID 561 | # %x = transaction ID (0 if none) 562 | # %q = stop here in non-session 563 | # processes 564 | # %% = '%' 565 | # e.g. '<%u%%%d> ' 566 | #log_lock_waits = off # log lock waits >= deadlock_timeout 567 | #log_recovery_conflict_waits = off # log standby recovery conflict waits 568 | # >= deadlock_timeout 569 | #log_parameter_max_length = -1 # when logging statements, limit logged 570 | # bind-parameter values to N bytes; 571 | # -1 means print in full, 0 disables 572 | #log_parameter_max_length_on_error = 0 # when logging an error, limit logged 573 | # bind-parameter values to N bytes; 574 | # -1 means print in full, 0 disables 575 | #log_statement = 'none' # none, ddl, mod, all 576 | #log_replication_commands = off 577 | #log_temp_files = -1 # log temporary files equal or larger 578 | # than the specified size in kilobytes; 579 | # -1 disables, 0 logs all temp files 580 | #log_timezone = 'GMT' 581 | 582 | 583 | #------------------------------------------------------------------------------ 584 | # PROCESS TITLE 585 | #------------------------------------------------------------------------------ 586 | 587 | #cluster_name = '' # added to process titles if nonempty 588 | # (change requires restart) 589 | #update_process_title = on 590 | 591 | 592 | #------------------------------------------------------------------------------ 593 | # STATISTICS 594 | #------------------------------------------------------------------------------ 595 | 596 | # - Query and Index Statistics Collector - 597 | 598 | #track_activities = on 599 | #track_activity_query_size = 1024 # (change requires restart) 600 | #track_counts = on 601 | #track_io_timing = off 602 | #track_wal_io_timing = off 603 | #track_functions = none # none, pl, all 604 | #stats_temp_directory = 'pg_stat_tmp' 605 | 606 | 607 | # - Monitoring - 608 | 609 | #compute_query_id = auto 610 | #log_statement_stats = off 611 | #log_parser_stats = off 612 | #log_planner_stats = off 613 | #log_executor_stats = off 614 | 615 | 616 | #------------------------------------------------------------------------------ 617 | # AUTOVACUUM 618 | #------------------------------------------------------------------------------ 619 | 620 | #autovacuum = on # Enable autovacuum subprocess? 'on' 621 | # requires track_counts to also be on. 622 | #autovacuum_max_workers = 3 # max number of autovacuum subprocesses 623 | # (change requires restart) 624 | #autovacuum_naptime = 1min # time between autovacuum runs 625 | #autovacuum_vacuum_threshold = 50 # min number of row updates before 626 | # vacuum 627 | #autovacuum_vacuum_insert_threshold = 1000 # min number of row inserts 628 | # before vacuum; -1 disables insert 629 | # vacuums 630 | #autovacuum_analyze_threshold = 50 # min number of row updates before 631 | # analyze 632 | #autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum 633 | #autovacuum_vacuum_insert_scale_factor = 0.2 # fraction of inserts over table 634 | # size before insert vacuum 635 | #autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze 636 | #autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum 637 | # (change requires restart) 638 | #autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age 639 | # before forced vacuum 640 | # (change requires restart) 641 | #autovacuum_vacuum_cost_delay = 2ms # default vacuum cost delay for 642 | # autovacuum, in milliseconds; 643 | # -1 means use vacuum_cost_delay 644 | #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for 645 | # autovacuum, -1 means use 646 | # vacuum_cost_limit 647 | 648 | 649 | #------------------------------------------------------------------------------ 650 | # CLIENT CONNECTION DEFAULTS 651 | #------------------------------------------------------------------------------ 652 | 653 | # - Statement Behavior - 654 | 655 | #client_min_messages = notice # values in order of decreasing detail: 656 | # debug5 657 | # debug4 658 | # debug3 659 | # debug2 660 | # debug1 661 | # log 662 | # notice 663 | # warning 664 | # error 665 | #search_path = '"$user", public' # schema names 666 | #row_security = on 667 | #default_table_access_method = 'heap' 668 | #default_tablespace = '' # a tablespace name, '' uses the default 669 | #default_toast_compression = 'pglz' # 'pglz' or 'lz4' 670 | #temp_tablespaces = '' # a list of tablespace names, '' uses 671 | # only default tablespace 672 | #check_function_bodies = on 673 | #default_transaction_isolation = 'read committed' 674 | #default_transaction_read_only = off 675 | #default_transaction_deferrable = off 676 | #session_replication_role = 'origin' 677 | #statement_timeout = 0 # in milliseconds, 0 is disabled 678 | #lock_timeout = 0 # in milliseconds, 0 is disabled 679 | #idle_in_transaction_session_timeout = 0 # in milliseconds, 0 is disabled 680 | #idle_session_timeout = 0 # in milliseconds, 0 is disabled 681 | #vacuum_freeze_table_age = 150000000 682 | #vacuum_freeze_min_age = 50000000 683 | #vacuum_failsafe_age = 1600000000 684 | #vacuum_multixact_freeze_table_age = 150000000 685 | #vacuum_multixact_freeze_min_age = 5000000 686 | #vacuum_multixact_failsafe_age = 1600000000 687 | #bytea_output = 'hex' # hex, escape 688 | #xmlbinary = 'base64' 689 | #xmloption = 'content' 690 | #gin_pending_list_limit = 4MB 691 | 692 | # - Locale and Formatting - 693 | 694 | #datestyle = 'iso, mdy' 695 | #intervalstyle = 'postgres' 696 | #timezone = 'GMT' 697 | #timezone_abbreviations = 'Default' # Select the set of available time zone 698 | # abbreviations. Currently, there are 699 | # Default 700 | # Australia (historical usage) 701 | # India 702 | # You can create your own file in 703 | # share/timezonesets/. 704 | #extra_float_digits = 1 # min -15, max 3; any value >0 actually 705 | # selects precise output mode 706 | #client_encoding = sql_ascii # actually, defaults to database 707 | # encoding 708 | 709 | # These settings are initialized by initdb, but they can be changed. 710 | #lc_messages = 'C' # locale for system error message 711 | # strings 712 | #lc_monetary = 'C' # locale for monetary formatting 713 | #lc_numeric = 'C' # locale for number formatting 714 | #lc_time = 'C' # locale for time formatting 715 | 716 | # default configuration for text search 717 | #default_text_search_config = 'pg_catalog.simple' 718 | 719 | # - Shared Library Preloading - 720 | 721 | #local_preload_libraries = '' 722 | #session_preload_libraries = '' 723 | #shared_preload_libraries = '' # (change requires restart) 724 | #jit_provider = 'llvmjit' # JIT library to use 725 | 726 | # - Other Defaults - 727 | 728 | #dynamic_library_path = '$libdir' 729 | #extension_destdir = '' # prepend path when loading extensions 730 | # and shared objects (added by Debian) 731 | #gin_fuzzy_search_limit = 0 732 | 733 | 734 | #------------------------------------------------------------------------------ 735 | # LOCK MANAGEMENT 736 | #------------------------------------------------------------------------------ 737 | 738 | #deadlock_timeout = 1s 739 | #max_locks_per_transaction = 64 # min 10 740 | # (change requires restart) 741 | #max_pred_locks_per_transaction = 64 # min 10 742 | # (change requires restart) 743 | #max_pred_locks_per_relation = -2 # negative values mean 744 | # (max_pred_locks_per_transaction 745 | # / -max_pred_locks_per_relation) - 1 746 | #max_pred_locks_per_page = 2 # min 0 747 | 748 | 749 | #------------------------------------------------------------------------------ 750 | # VERSION AND PLATFORM COMPATIBILITY 751 | #------------------------------------------------------------------------------ 752 | 753 | # - Previous PostgreSQL Versions - 754 | 755 | #array_nulls = on 756 | #backslash_quote = safe_encoding # on, off, or safe_encoding 757 | #escape_string_warning = on 758 | #lo_compat_privileges = off 759 | #quote_all_identifiers = off 760 | #standard_conforming_strings = on 761 | #synchronize_seqscans = on 762 | 763 | # - Other Platforms and Clients - 764 | 765 | #transform_null_equals = off 766 | 767 | 768 | #------------------------------------------------------------------------------ 769 | # ERROR HANDLING 770 | #------------------------------------------------------------------------------ 771 | 772 | #exit_on_error = off # terminate session on any error? 773 | #restart_after_crash = on # reinitialize after backend crash? 774 | #data_sync_retry = off # retry or panic on failure to fsync 775 | # data? 776 | # (change requires restart) 777 | #recovery_init_sync_method = fsync # fsync, syncfs (Linux 5.8+) 778 | 779 | 780 | #------------------------------------------------------------------------------ 781 | # CONFIG FILE INCLUDES 782 | #------------------------------------------------------------------------------ 783 | 784 | # These options allow settings to be loaded from files other than the 785 | # default postgresql.conf. Note that these are directives, not variable 786 | # assignments, so they can usefully be given more than once. 787 | 788 | #include_dir = '...' # include files ending in '.conf' from 789 | # a directory, e.g., 'conf.d' 790 | #include_if_exists = '...' # include file only if it exists 791 | #include = '...' # include file 792 | 793 | 794 | #------------------------------------------------------------------------------ 795 | # CUSTOMIZED OPTIONS 796 | #------------------------------------------------------------------------------ 797 | 798 | # Add settings for extensions here 799 | -------------------------------------------------------------------------------- /postgres/replication/slave.conf: -------------------------------------------------------------------------------- 1 | # ----------------------------- 2 | # PostgreSQL configuration file 3 | # ----------------------------- 4 | # 5 | # This file consists of lines of the form: 6 | # 7 | # name = value 8 | # 9 | # (The "=" is optional.) Whitespace may be used. Comments are introduced with 10 | # "#" anywhere on a line. The complete list of parameter names and allowed 11 | # values can be found in the PostgreSQL documentation. 12 | # 13 | # The commented-out settings shown in this file represent the default values. 14 | # Re-commenting a setting is NOT sufficient to revert it to the default value; 15 | # you need to reload the server. 16 | # 17 | # This file is read on server startup and when the server receives a SIGHUP 18 | # signal. If you edit the file on a running system, you have to SIGHUP the 19 | # server for the changes to take effect, run "pg_ctl reload", or execute 20 | # "SELECT pg_reload_conf()". Some parameters, which are marked below, 21 | # require a server shutdown and restart to take effect. 22 | # 23 | # Any parameter can also be given as a command-line option to the server, e.g., 24 | # "postgres -c log_connections=on". Some parameters can be changed at run time 25 | # with the "SET" SQL command. 26 | # 27 | # Memory units: B = bytes Time units: us = microseconds 28 | # kB = kilobytes ms = milliseconds 29 | # MB = megabytes s = seconds 30 | # GB = gigabytes min = minutes 31 | # TB = terabytes h = hours 32 | # d = days 33 | 34 | 35 | #------------------------------------------------------------------------------ 36 | # FILE LOCATIONS 37 | #------------------------------------------------------------------------------ 38 | 39 | # The default values of these variables are driven from the -D command-line 40 | # option or PGDATA environment variable, represented here as ConfigDir. 41 | 42 | #data_directory = 'ConfigDir' # use data in another directory 43 | # (change requires restart) 44 | #hba_file = 'ConfigDir/pg_hba.conf' # host-based authentication file 45 | # (change requires restart) 46 | #ident_file = 'ConfigDir/pg_ident.conf' # ident configuration file 47 | # (change requires restart) 48 | 49 | # If external_pid_file is not explicitly set, no extra PID file is written. 50 | #external_pid_file = '' # write an extra PID file 51 | # (change requires restart) 52 | 53 | 54 | #------------------------------------------------------------------------------ 55 | # CONNECTIONS AND AUTHENTICATION 56 | #------------------------------------------------------------------------------ 57 | 58 | # - Connection Settings - 59 | 60 | listen_addresses = '*' 61 | # comma-separated list of addresses; 62 | # defaults to 'localhost'; use '*' for all 63 | # (change requires restart) 64 | #port = 5432 # (change requires restart) 65 | #max_connections = 100 # (change requires restart) 66 | #superuser_reserved_connections = 3 # (change requires restart) 67 | #unix_socket_directories = '/tmp' # comma-separated list of directories 68 | # (change requires restart) 69 | #unix_socket_group = '' # (change requires restart) 70 | #unix_socket_permissions = 0777 # begin with 0 to use octal notation 71 | # (change requires restart) 72 | #bonjour = off # advertise server via Bonjour 73 | # (change requires restart) 74 | #bonjour_name = '' # defaults to the computer name 75 | # (change requires restart) 76 | 77 | # - TCP settings - 78 | # see "man tcp" for details 79 | 80 | #tcp_keepalives_idle = 0 # TCP_KEEPIDLE, in seconds; 81 | # 0 selects the system default 82 | #tcp_keepalives_interval = 0 # TCP_KEEPINTVL, in seconds; 83 | # 0 selects the system default 84 | #tcp_keepalives_count = 0 # TCP_KEEPCNT; 85 | # 0 selects the system default 86 | #tcp_user_timeout = 0 # TCP_USER_TIMEOUT, in milliseconds; 87 | # 0 selects the system default 88 | 89 | #client_connection_check_interval = 0 # time between checks for client 90 | # disconnection while running queries; 91 | # 0 for never 92 | 93 | # - Authentication - 94 | 95 | #authentication_timeout = 1min # 1s-600s 96 | #password_encryption = scram-sha-256 # scram-sha-256 or md5 97 | #db_user_namespace = off 98 | 99 | # GSSAPI using Kerberos 100 | #krb_server_keyfile = 'FILE:${sysconfdir}/krb5.keytab' 101 | #krb_caseins_users = off 102 | 103 | # - SSL - 104 | 105 | #ssl = off 106 | #ssl_ca_file = '' 107 | #ssl_cert_file = 'server.crt' 108 | #ssl_crl_file = '' 109 | #ssl_crl_dir = '' 110 | #ssl_key_file = 'server.key' 111 | #ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers 112 | #ssl_prefer_server_ciphers = on 113 | #ssl_ecdh_curve = 'prime256v1' 114 | #ssl_min_protocol_version = 'TLSv1.2' 115 | #ssl_max_protocol_version = '' 116 | #ssl_dh_params_file = '' 117 | #ssl_passphrase_command = '' 118 | #ssl_passphrase_command_supports_reload = off 119 | 120 | 121 | #------------------------------------------------------------------------------ 122 | # RESOURCE USAGE (except WAL) 123 | #------------------------------------------------------------------------------ 124 | 125 | # - Memory - 126 | 127 | #shared_buffers = 32MB # min 128kB 128 | # (change requires restart) 129 | #huge_pages = try # on, off, or try 130 | # (change requires restart) 131 | #huge_page_size = 0 # zero for system default 132 | # (change requires restart) 133 | #temp_buffers = 8MB # min 800kB 134 | #max_prepared_transactions = 0 # zero disables the feature 135 | # (change requires restart) 136 | # Caution: it is not advisable to set max_prepared_transactions nonzero unless 137 | # you actively intend to use prepared transactions. 138 | #work_mem = 4MB # min 64kB 139 | #hash_mem_multiplier = 1.0 # 1-1000.0 multiplier on hash table work_mem 140 | #maintenance_work_mem = 64MB # min 1MB 141 | #autovacuum_work_mem = -1 # min 1MB, or -1 to use maintenance_work_mem 142 | #logical_decoding_work_mem = 64MB # min 64kB 143 | #max_stack_depth = 2MB # min 100kB 144 | #shared_memory_type = mmap # the default is the first option 145 | # supported by the operating system: 146 | # mmap 147 | # sysv 148 | # windows 149 | # (change requires restart) 150 | #dynamic_shared_memory_type = posix # the default is the first option 151 | # supported by the operating system: 152 | # posix 153 | # sysv 154 | # windows 155 | # mmap 156 | # (change requires restart) 157 | #min_dynamic_shared_memory = 0MB # (change requires restart) 158 | 159 | # - Disk - 160 | 161 | #temp_file_limit = -1 # limits per-process temp file space 162 | # in kilobytes, or -1 for no limit 163 | 164 | # - Kernel Resources - 165 | 166 | #max_files_per_process = 1000 # min 64 167 | # (change requires restart) 168 | 169 | # - Cost-Based Vacuum Delay - 170 | 171 | #vacuum_cost_delay = 0 # 0-100 milliseconds (0 disables) 172 | #vacuum_cost_page_hit = 1 # 0-10000 credits 173 | #vacuum_cost_page_miss = 2 # 0-10000 credits 174 | #vacuum_cost_page_dirty = 20 # 0-10000 credits 175 | #vacuum_cost_limit = 200 # 1-10000 credits 176 | 177 | # - Background Writer - 178 | 179 | #bgwriter_delay = 200ms # 10-10000ms between rounds 180 | #bgwriter_lru_maxpages = 100 # max buffers written/round, 0 disables 181 | #bgwriter_lru_multiplier = 2.0 # 0-10.0 multiplier on buffers scanned/round 182 | #bgwriter_flush_after = 0 # measured in pages, 0 disables 183 | 184 | # - Asynchronous Behavior - 185 | 186 | #backend_flush_after = 0 # measured in pages, 0 disables 187 | #effective_io_concurrency = 1 # 1-1000; 0 disables prefetching 188 | #maintenance_io_concurrency = 10 # 1-1000; 0 disables prefetching 189 | #max_worker_processes = 8 # (change requires restart) 190 | #max_parallel_workers_per_gather = 2 # taken from max_parallel_workers 191 | #max_parallel_maintenance_workers = 2 # taken from max_parallel_workers 192 | #max_parallel_workers = 8 # maximum number of max_worker_processes that 193 | # can be used in parallel operations 194 | #parallel_leader_participation = on 195 | #old_snapshot_threshold = -1 # 1min-60d; -1 disables; 0 is immediate 196 | # (change requires restart) 197 | 198 | 199 | #------------------------------------------------------------------------------ 200 | # WRITE-AHEAD LOG 201 | #------------------------------------------------------------------------------ 202 | 203 | # - Settings - 204 | 205 | wal_level = logical # minimal, replica, or logical 206 | # (change requires restart) 207 | #fsync = on # flush data to disk for crash safety 208 | # (turning this off can cause 209 | # unrecoverable data corruption) 210 | #synchronous_commit = on # synchronization level; 211 | # off, local, remote_write, remote_apply, or on 212 | #wal_sync_method = fsync # the default is the first option 213 | # supported by the operating system: 214 | # open_datasync 215 | # fdatasync (default on Linux and FreeBSD) 216 | # fsync 217 | # fsync_writethrough 218 | # open_sync 219 | #full_page_writes = on # recover from partial page writes 220 | #wal_log_hints = off # also do full page writes of non-critical updates 221 | # (change requires restart) 222 | #wal_compression = off # enable compression of full-page writes 223 | #wal_init_zero = on # zero-fill new WAL files 224 | #wal_recycle = on # recycle WAL files 225 | #wal_buffers = -1 # min 32kB, -1 sets based on shared_buffers 226 | # (change requires restart) 227 | #wal_writer_delay = 200ms # 1-10000 milliseconds 228 | #wal_writer_flush_after = 1MB # measured in pages, 0 disables 229 | #wal_skip_threshold = 2MB 230 | 231 | #commit_delay = 0 # range 0-100000, in microseconds 232 | #commit_siblings = 5 # range 1-1000 233 | 234 | # - Checkpoints - 235 | 236 | #checkpoint_timeout = 5min # range 30s-1d 237 | #checkpoint_completion_target = 0.9 # checkpoint target duration, 0.0 - 1.0 238 | #checkpoint_flush_after = 0 # measured in pages, 0 disables 239 | #checkpoint_warning = 30s # 0 disables 240 | #max_wal_size = 1GB 241 | #min_wal_size = 80MB 242 | 243 | # - Archiving - 244 | 245 | #archive_mode = off # enables archiving; off, on, or always 246 | # (change requires restart) 247 | #archive_command = '' # command to use to archive a logfile segment 248 | # placeholders: %p = path of file to archive 249 | # %f = file name only 250 | # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f' 251 | #archive_timeout = 0 # force a logfile segment switch after this 252 | # number of seconds; 0 disables 253 | 254 | # - Archive Recovery - 255 | 256 | # These are only used in recovery mode. 257 | 258 | restore_command = 'cp /var/lib/postgresql/data/pg_wal/%f "%p"' # command to use to restore an archived logfile segment 259 | # placeholders: %p = path of file to restore 260 | # %f = file name only 261 | # e.g. 'cp /mnt/server/archivedir/%f %p' 262 | #archive_cleanup_command = '' # command to execute at every restartpoint 263 | #recovery_end_command = '' # command to execute at completion of recovery 264 | 265 | # - Recovery Target - 266 | 267 | # Set these only when performing a targeted recovery. 268 | 269 | #recovery_target = '' # 'immediate' to end recovery as soon as a 270 | # consistent state is reached 271 | # (change requires restart) 272 | #recovery_target_name = '' # the named restore point to which recovery will proceed 273 | # (change requires restart) 274 | #recovery_target_time = '' # the time stamp up to which recovery will proceed 275 | # (change requires restart) 276 | #recovery_target_xid = '' # the transaction ID up to which recovery will proceed 277 | # (change requires restart) 278 | #recovery_target_lsn = '' # the WAL LSN up to which recovery will proceed 279 | # (change requires restart) 280 | #recovery_target_inclusive = on # Specifies whether to stop: 281 | # just after the specified recovery target (on) 282 | # just before the recovery target (off) 283 | # (change requires restart) 284 | #recovery_target_timeline = 'latest' # 'current', 'latest', or timeline ID 285 | # (change requires restart) 286 | #recovery_target_action = 'pause' # 'pause', 'promote', 'shutdown' 287 | # (change requires restart) 288 | 289 | 290 | #------------------------------------------------------------------------------ 291 | # REPLICATION 292 | #------------------------------------------------------------------------------ 293 | 294 | # - Sending Servers - 295 | 296 | # Set these on the primary and on any standby that will send replication data. 297 | 298 | max_wal_senders = 2 # max number of walsender processes 299 | # (change requires restart) 300 | #max_replication_slots = 10 # max number of replication slots 301 | # (change requires restart) 302 | #wal_keep_size = 0 # in megabytes; 0 disables 303 | #max_slot_wal_keep_size = -1 # in megabytes; -1 disables 304 | #wal_sender_timeout = 60s # in milliseconds; 0 disables 305 | #track_commit_timestamp = off # collect timestamp of transaction commit 306 | # (change requires restart) 307 | 308 | # - Primary Server - 309 | 310 | # These settings are ignored on a standby server. 311 | 312 | #synchronous_standby_names = '' # standby servers that provide sync rep 313 | # method to choose sync standbys, number of sync standbys, 314 | # and comma-separated list of application_name 315 | # from standby(s); '*' = all 316 | #vacuum_defer_cleanup_age = 0 # number of xacts by which cleanup is delayed 317 | 318 | # - Standby Servers - 319 | 320 | # These settings are ignored on a primary server. 321 | 322 | # primary_conninfo = 'host=customer-plans-service-customer-plans-service-db-master-1 port=5432 user=replicator password=my_replicator_password' # connection string to sending server 323 | #primary_slot_name = '' # replication slot on sending server 324 | #promote_trigger_file = '' # file name whose presence ends recovery 325 | hot_standby = on # "off" disallows queries during recovery 326 | # (change requires restart) 327 | #max_standby_archive_delay = 30s # max delay before canceling queries 328 | # when reading WAL from archive; 329 | # -1 allows indefinite delay 330 | #max_standby_streaming_delay = 30s # max delay before canceling queries 331 | # when reading streaming WAL; 332 | # -1 allows indefinite delay 333 | #wal_receiver_create_temp_slot = off # create temp slot if primary_slot_name 334 | # is not set 335 | #wal_receiver_status_interval = 10s # send replies at least this often 336 | # 0 disables 337 | #hot_standby_feedback = off # send info from standby to prevent 338 | # query conflicts 339 | #wal_receiver_timeout = 60s # time that receiver waits for 340 | # communication from primary 341 | # in milliseconds; 0 disables 342 | #wal_retrieve_retry_interval = 5s # time to wait before retrying to 343 | # retrieve WAL after a failed attempt 344 | #recovery_min_apply_delay = 0 # minimum delay for applying changes during recovery 345 | 346 | # - Subscribers - 347 | 348 | # These settings are ignored on a publisher. 349 | 350 | max_logical_replication_workers = 4 # taken from max_worker_processes 351 | # (change requires restart) 352 | max_sync_workers_per_subscription = 2 # taken from max_logical_replication_workers 353 | 354 | 355 | #------------------------------------------------------------------------------ 356 | # QUERY TUNING 357 | #------------------------------------------------------------------------------ 358 | 359 | # - Planner Method Configuration - 360 | 361 | #enable_async_append = on 362 | #enable_bitmapscan = on 363 | #enable_gathermerge = on 364 | #enable_hashagg = on 365 | #enable_hashjoin = on 366 | #enable_incremental_sort = on 367 | #enable_indexscan = on 368 | #enable_indexonlyscan = on 369 | #enable_material = on 370 | #enable_memoize = on 371 | #enable_mergejoin = on 372 | #enable_nestloop = on 373 | #enable_parallel_append = on 374 | #enable_parallel_hash = on 375 | #enable_partition_pruning = on 376 | #enable_partitionwise_join = off 377 | #enable_partitionwise_aggregate = off 378 | #enable_seqscan = on 379 | #enable_sort = on 380 | #enable_tidscan = on 381 | 382 | # - Planner Cost Constants - 383 | 384 | #seq_page_cost = 1.0 # measured on an arbitrary scale 385 | #random_page_cost = 4.0 # same scale as above 386 | #cpu_tuple_cost = 0.01 # same scale as above 387 | #cpu_index_tuple_cost = 0.005 # same scale as above 388 | #cpu_operator_cost = 0.0025 # same scale as above 389 | #parallel_setup_cost = 1000.0 # same scale as above 390 | #parallel_tuple_cost = 0.1 # same scale as above 391 | #min_parallel_table_scan_size = 8MB 392 | #min_parallel_index_scan_size = 512kB 393 | #effective_cache_size = 4GB 394 | 395 | #jit_above_cost = 100000 # perform JIT compilation if available 396 | # and query more expensive than this; 397 | # -1 disables 398 | #jit_inline_above_cost = 500000 # inline small functions if query is 399 | # more expensive than this; -1 disables 400 | #jit_optimize_above_cost = 500000 # use expensive JIT optimizations if 401 | # query is more expensive than this; 402 | # -1 disables 403 | 404 | # - Genetic Query Optimizer - 405 | 406 | #geqo = on 407 | #geqo_threshold = 12 408 | #geqo_effort = 5 # range 1-10 409 | #geqo_pool_size = 0 # selects default based on effort 410 | #geqo_generations = 0 # selects default based on effort 411 | #geqo_selection_bias = 2.0 # range 1.5-2.0 412 | #geqo_seed = 0.0 # range 0.0-1.0 413 | 414 | # - Other Planner Options - 415 | 416 | #default_statistics_target = 100 # range 1-10000 417 | #constraint_exclusion = partition # on, off, or partition 418 | #cursor_tuple_fraction = 0.1 # range 0.0-1.0 419 | #from_collapse_limit = 8 420 | #jit = on # allow JIT compilation 421 | #join_collapse_limit = 8 # 1 disables collapsing of explicit 422 | # JOIN clauses 423 | #plan_cache_mode = auto # auto, force_generic_plan or 424 | # force_custom_plan 425 | 426 | 427 | #------------------------------------------------------------------------------ 428 | # REPORTING AND LOGGING 429 | #------------------------------------------------------------------------------ 430 | 431 | # - Where to Log - 432 | 433 | #log_destination = 'stderr' # Valid values are combinations of 434 | # stderr, csvlog, syslog, and eventlog, 435 | # depending on platform. csvlog 436 | # requires logging_collector to be on. 437 | 438 | # This is used when logging to stderr: 439 | #logging_collector = off # Enable capturing of stderr and csvlog 440 | # into log files. Required to be on for 441 | # csvlogs. 442 | # (change requires restart) 443 | 444 | # These are only used if logging_collector is on: 445 | #log_directory = 'log' # directory where log files are written, 446 | # can be absolute or relative to PGDATA 447 | #log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern, 448 | # can include strftime() escapes 449 | #log_file_mode = 0600 # creation mode for log files, 450 | # begin with 0 to use octal notation 451 | #log_rotation_age = 1d # Automatic rotation of logfiles will 452 | # happen after that time. 0 disables. 453 | #log_rotation_size = 10MB # Automatic rotation of logfiles will 454 | # happen after that much log output. 455 | # 0 disables. 456 | #log_truncate_on_rotation = off # If on, an existing log file with the 457 | # same name as the new log file will be 458 | # truncated rather than appended to. 459 | # But such truncation only occurs on 460 | # time-driven rotation, not on restarts 461 | # or size-driven rotation. Default is 462 | # off, meaning append to existing files 463 | # in all cases. 464 | 465 | # These are relevant when logging to syslog: 466 | #syslog_facility = 'LOCAL0' 467 | #syslog_ident = 'postgres' 468 | #syslog_sequence_numbers = on 469 | #syslog_split_messages = on 470 | 471 | # This is only relevant when logging to eventlog (Windows): 472 | # (change requires restart) 473 | #event_source = 'PostgreSQL' 474 | 475 | # - When to Log - 476 | 477 | #log_min_messages = warning # values in order of decreasing detail: 478 | # debug5 479 | # debug4 480 | # debug3 481 | # debug2 482 | # debug1 483 | # info 484 | # notice 485 | # warning 486 | # error 487 | # log 488 | # fatal 489 | # panic 490 | 491 | #log_min_error_statement = error # values in order of decreasing detail: 492 | # debug5 493 | # debug4 494 | # debug3 495 | # debug2 496 | # debug1 497 | # info 498 | # notice 499 | # warning 500 | # error 501 | # log 502 | # fatal 503 | # panic (effectively off) 504 | 505 | #log_min_duration_statement = -1 # -1 is disabled, 0 logs all statements 506 | # and their durations, > 0 logs only 507 | # statements running at least this number 508 | # of milliseconds 509 | 510 | #log_min_duration_sample = -1 # -1 is disabled, 0 logs a sample of statements 511 | # and their durations, > 0 logs only a sample of 512 | # statements running at least this number 513 | # of milliseconds; 514 | # sample fraction is determined by log_statement_sample_rate 515 | 516 | #log_statement_sample_rate = 1.0 # fraction of logged statements exceeding 517 | # log_min_duration_sample to be logged; 518 | # 1.0 logs all such statements, 0.0 never logs 519 | 520 | 521 | #log_transaction_sample_rate = 0.0 # fraction of transactions whose statements 522 | # are logged regardless of their duration; 1.0 logs all 523 | # statements from all transactions, 0.0 never logs 524 | 525 | # - What to Log - 526 | 527 | #debug_print_parse = off 528 | #debug_print_rewritten = off 529 | #debug_print_plan = off 530 | #debug_pretty_print = on 531 | #log_autovacuum_min_duration = -1 # log autovacuum activity; 532 | # -1 disables, 0 logs all actions and 533 | # their durations, > 0 logs only 534 | # actions running at least this number 535 | # of milliseconds. 536 | #log_checkpoints = off 537 | #log_connections = off 538 | #log_disconnections = off 539 | #log_duration = off 540 | #log_error_verbosity = default # terse, default, or verbose messages 541 | #log_hostname = off 542 | #log_line_prefix = '%m [%p] ' # special values: 543 | # %a = application name 544 | # %u = user name 545 | # %d = database name 546 | # %r = remote host and port 547 | # %h = remote host 548 | # %b = backend type 549 | # %p = process ID 550 | # %P = process ID of parallel group leader 551 | # %t = timestamp without milliseconds 552 | # %m = timestamp with milliseconds 553 | # %n = timestamp with milliseconds (as a Unix epoch) 554 | # %Q = query ID (0 if none or not computed) 555 | # %i = command tag 556 | # %e = SQL state 557 | # %c = session ID 558 | # %l = session line number 559 | # %s = session start timestamp 560 | # %v = virtual transaction ID 561 | # %x = transaction ID (0 if none) 562 | # %q = stop here in non-session 563 | # processes 564 | # %% = '%' 565 | # e.g. '<%u%%%d> ' 566 | #log_lock_waits = off # log lock waits >= deadlock_timeout 567 | #log_recovery_conflict_waits = off # log standby recovery conflict waits 568 | # >= deadlock_timeout 569 | #log_parameter_max_length = -1 # when logging statements, limit logged 570 | # bind-parameter values to N bytes; 571 | # -1 means print in full, 0 disables 572 | #log_parameter_max_length_on_error = 0 # when logging an error, limit logged 573 | # bind-parameter values to N bytes; 574 | # -1 means print in full, 0 disables 575 | #log_statement = 'none' # none, ddl, mod, all 576 | #log_replication_commands = off 577 | #log_temp_files = -1 # log temporary files equal or larger 578 | # than the specified size in kilobytes; 579 | # -1 disables, 0 logs all temp files 580 | #log_timezone = 'GMT' 581 | 582 | 583 | #------------------------------------------------------------------------------ 584 | # PROCESS TITLE 585 | #------------------------------------------------------------------------------ 586 | 587 | #cluster_name = '' # added to process titles if nonempty 588 | # (change requires restart) 589 | #update_process_title = on 590 | 591 | 592 | #------------------------------------------------------------------------------ 593 | # STATISTICS 594 | #------------------------------------------------------------------------------ 595 | 596 | # - Query and Index Statistics Collector - 597 | 598 | #track_activities = on 599 | #track_activity_query_size = 1024 # (change requires restart) 600 | #track_counts = on 601 | #track_io_timing = off 602 | #track_wal_io_timing = off 603 | #track_functions = none # none, pl, all 604 | #stats_temp_directory = 'pg_stat_tmp' 605 | 606 | 607 | # - Monitoring - 608 | 609 | #compute_query_id = auto 610 | #log_statement_stats = off 611 | #log_parser_stats = off 612 | #log_planner_stats = off 613 | #log_executor_stats = off 614 | 615 | 616 | #------------------------------------------------------------------------------ 617 | # AUTOVACUUM 618 | #------------------------------------------------------------------------------ 619 | 620 | #autovacuum = on # Enable autovacuum subprocess? 'on' 621 | # requires track_counts to also be on. 622 | #autovacuum_max_workers = 3 # max number of autovacuum subprocesses 623 | # (change requires restart) 624 | #autovacuum_naptime = 1min # time between autovacuum runs 625 | #autovacuum_vacuum_threshold = 50 # min number of row updates before 626 | # vacuum 627 | #autovacuum_vacuum_insert_threshold = 1000 # min number of row inserts 628 | # before vacuum; -1 disables insert 629 | # vacuums 630 | #autovacuum_analyze_threshold = 50 # min number of row updates before 631 | # analyze 632 | #autovacuum_vacuum_scale_factor = 0.2 # fraction of table size before vacuum 633 | #autovacuum_vacuum_insert_scale_factor = 0.2 # fraction of inserts over table 634 | # size before insert vacuum 635 | #autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze 636 | #autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum 637 | # (change requires restart) 638 | #autovacuum_multixact_freeze_max_age = 400000000 # maximum multixact age 639 | # before forced vacuum 640 | # (change requires restart) 641 | #autovacuum_vacuum_cost_delay = 2ms # default vacuum cost delay for 642 | # autovacuum, in milliseconds; 643 | # -1 means use vacuum_cost_delay 644 | #autovacuum_vacuum_cost_limit = -1 # default vacuum cost limit for 645 | # autovacuum, -1 means use 646 | # vacuum_cost_limit 647 | 648 | 649 | #------------------------------------------------------------------------------ 650 | # CLIENT CONNECTION DEFAULTS 651 | #------------------------------------------------------------------------------ 652 | 653 | # - Statement Behavior - 654 | 655 | #client_min_messages = notice # values in order of decreasing detail: 656 | # debug5 657 | # debug4 658 | # debug3 659 | # debug2 660 | # debug1 661 | # log 662 | # notice 663 | # warning 664 | # error 665 | #search_path = '"$user", public' # schema names 666 | #row_security = on 667 | #default_table_access_method = 'heap' 668 | #default_tablespace = '' # a tablespace name, '' uses the default 669 | #default_toast_compression = 'pglz' # 'pglz' or 'lz4' 670 | #temp_tablespaces = '' # a list of tablespace names, '' uses 671 | # only default tablespace 672 | #check_function_bodies = on 673 | #default_transaction_isolation = 'read committed' 674 | #default_transaction_read_only = off 675 | #default_transaction_deferrable = off 676 | #session_replication_role = 'origin' 677 | #statement_timeout = 0 # in milliseconds, 0 is disabled 678 | #lock_timeout = 0 # in milliseconds, 0 is disabled 679 | #idle_in_transaction_session_timeout = 0 # in milliseconds, 0 is disabled 680 | #idle_session_timeout = 0 # in milliseconds, 0 is disabled 681 | #vacuum_freeze_table_age = 150000000 682 | #vacuum_freeze_min_age = 50000000 683 | #vacuum_failsafe_age = 1600000000 684 | #vacuum_multixact_freeze_table_age = 150000000 685 | #vacuum_multixact_freeze_min_age = 5000000 686 | #vacuum_multixact_failsafe_age = 1600000000 687 | #bytea_output = 'hex' # hex, escape 688 | #xmlbinary = 'base64' 689 | #xmloption = 'content' 690 | #gin_pending_list_limit = 4MB 691 | 692 | # - Locale and Formatting - 693 | 694 | #datestyle = 'iso, mdy' 695 | #intervalstyle = 'postgres' 696 | #timezone = 'GMT' 697 | #timezone_abbreviations = 'Default' # Select the set of available time zone 698 | # abbreviations. Currently, there are 699 | # Default 700 | # Australia (historical usage) 701 | # India 702 | # You can create your own file in 703 | # share/timezonesets/. 704 | #extra_float_digits = 1 # min -15, max 3; any value >0 actually 705 | # selects precise output mode 706 | #client_encoding = sql_ascii # actually, defaults to database 707 | # encoding 708 | 709 | # These settings are initialized by initdb, but they can be changed. 710 | #lc_messages = 'C' # locale for system error message 711 | # strings 712 | #lc_monetary = 'C' # locale for monetary formatting 713 | #lc_numeric = 'C' # locale for number formatting 714 | #lc_time = 'C' # locale for time formatting 715 | 716 | # default configuration for text search 717 | #default_text_search_config = 'pg_catalog.simple' 718 | 719 | # - Shared Library Preloading - 720 | 721 | #local_preload_libraries = '' 722 | #session_preload_libraries = '' 723 | #shared_preload_libraries = '' # (change requires restart) 724 | #jit_provider = 'llvmjit' # JIT library to use 725 | 726 | # - Other Defaults - 727 | 728 | #dynamic_library_path = '$libdir' 729 | #extension_destdir = '' # prepend path when loading extensions 730 | # and shared objects (added by Debian) 731 | #gin_fuzzy_search_limit = 0 732 | 733 | 734 | #------------------------------------------------------------------------------ 735 | # LOCK MANAGEMENT 736 | #------------------------------------------------------------------------------ 737 | 738 | #deadlock_timeout = 1s 739 | #max_locks_per_transaction = 64 # min 10 740 | # (change requires restart) 741 | #max_pred_locks_per_transaction = 64 # min 10 742 | # (change requires restart) 743 | #max_pred_locks_per_relation = -2 # negative values mean 744 | # (max_pred_locks_per_transaction 745 | # / -max_pred_locks_per_relation) - 1 746 | #max_pred_locks_per_page = 2 # min 0 747 | 748 | 749 | #------------------------------------------------------------------------------ 750 | # VERSION AND PLATFORM COMPATIBILITY 751 | #------------------------------------------------------------------------------ 752 | 753 | # - Previous PostgreSQL Versions - 754 | 755 | #array_nulls = on 756 | #backslash_quote = safe_encoding # on, off, or safe_encoding 757 | #escape_string_warning = on 758 | #lo_compat_privileges = off 759 | #quote_all_identifiers = off 760 | #standard_conforming_strings = on 761 | #synchronize_seqscans = on 762 | 763 | # - Other Platforms and Clients - 764 | 765 | #transform_null_equals = off 766 | 767 | 768 | #------------------------------------------------------------------------------ 769 | # ERROR HANDLING 770 | #------------------------------------------------------------------------------ 771 | 772 | #exit_on_error = off # terminate session on any error? 773 | #restart_after_crash = on # reinitialize after backend crash? 774 | #data_sync_retry = off # retry or panic on failure to fsync 775 | # data? 776 | # (change requires restart) 777 | #recovery_init_sync_method = fsync # fsync, syncfs (Linux 5.8+) 778 | 779 | 780 | #------------------------------------------------------------------------------ 781 | # CONFIG FILE INCLUDES 782 | #------------------------------------------------------------------------------ 783 | 784 | # These options allow settings to be loaded from files other than the 785 | # default postgresql.conf. Note that these are directives, not variable 786 | # assignments, so they can usefully be given more than once. 787 | 788 | #include_dir = '...' # include files ending in '.conf' from 789 | # a directory, e.g., 'conf.d' 790 | #include_if_exists = '...' # include file only if it exists 791 | #include = '...' # include file 792 | 793 | 794 | #------------------------------------------------------------------------------ 795 | # CUSTOMIZED OPTIONS 796 | #------------------------------------------------------------------------------ 797 | 798 | # Add settings for extensions here 799 | --------------------------------------------------------------------------------