docker compose componenti
This commit is contained in:
131
develop/docker-compose.yaml
Normal file
131
develop/docker-compose.yaml
Normal file
@@ -0,0 +1,131 @@
|
||||
networks:
|
||||
default:
|
||||
driver: bridge
|
||||
ipam:
|
||||
driver: default
|
||||
config:
|
||||
- subnet: 172.19.0.0/16
|
||||
|
||||
services:
|
||||
loki:
|
||||
image: grafana/loki:2.9.4
|
||||
container_name: loki
|
||||
ports:
|
||||
- "3100:3100"
|
||||
command: -config.file=/etc/loki/local-config.yaml
|
||||
volumes:
|
||||
- ./loki-config.yaml:/etc/loki/local-config.yaml:ro
|
||||
- loki-data:/loki
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 172.19.0.2
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:11.0.0
|
||||
container_name: grafana
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=admin
|
||||
- GF_SECURITY_ADMIN_PASSWORD=admin
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 172.19.0.3
|
||||
depends_on:
|
||||
- loki
|
||||
|
||||
pgsql:
|
||||
image: postgres:17
|
||||
# restart: unless-stopped
|
||||
container_name: postgresql
|
||||
volumes:
|
||||
- postgresql-data:/var/lib/postgresql/data
|
||||
- ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 172.19.0.4
|
||||
ports:
|
||||
- target: 5432
|
||||
published: 5432
|
||||
protocol: tcp
|
||||
mode: host
|
||||
environment:
|
||||
- POSTGRES_PASSWORD=Creative26!
|
||||
|
||||
# 9002 porta per la comunicazione tra container
|
||||
# 9003 porta per la connessione fuori da docker
|
||||
# 9004 porta quorumdei controller kraft
|
||||
kafka:
|
||||
image: apache/kafka:4.2.0
|
||||
container_name: kafka
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 172.19.0.5
|
||||
ports:
|
||||
- "9092:9092"
|
||||
environment:
|
||||
# Rimosso il prefisso _CFG_
|
||||
- KAFKA_NODE_ID=1
|
||||
- KAFKA_PROCESS_ROLES=broker,controller
|
||||
- KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER
|
||||
- KAFKA_LISTENERS=PLAINTEXT://:9092,EXTERNAL://:9094,CONTROLLER://:9093
|
||||
- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092,EXTERNAL://localhost:9094
|
||||
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL:PLAINTEXT
|
||||
- KAFKA_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
|
||||
# Variabile fondamentale per l'immagine Apache in modalita KRaft
|
||||
- KAFKA_INTER_BROKER_LISTENER_NAME=PLAINTEXT
|
||||
|
||||
# localhost:9001 interfaccia per esplorare topic e consumer
|
||||
kafdrop:
|
||||
image: obsidiandynamics/kafdrop:4.2.0
|
||||
container_name: kafdrop
|
||||
ports:
|
||||
- "9001:9001"
|
||||
environment:
|
||||
- KAFKA_BROKERCONNECT=kafka:9092
|
||||
- SERVER_PORT=9001
|
||||
depends_on:
|
||||
- kafka
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 172.19.0.6
|
||||
|
||||
#keycloak - in prod comand: start
|
||||
keycloak:
|
||||
image: quay.io/keycloak/keycloak:26.5.6
|
||||
container_name: keycloak
|
||||
environment:
|
||||
KC_BOOTSTRAP_ADMIN_USERNAME: admin
|
||||
KC_BOOTSTRAP_ADMIN_PASSWORD: Creative26!
|
||||
|
||||
# utilizza utenza di root
|
||||
KC_DB: postgres
|
||||
KC_DB_URL: jdbc:postgresql://pgsql:5432/keycloak
|
||||
KC_DB_USERNAME: postgres
|
||||
KC_DB_PASSWORD: Creative26!
|
||||
|
||||
KC_HOSTNAME: localhost
|
||||
KC_HOSTNAME_PORT: 8080
|
||||
KC_HOSTNAME_STRICT: 'false'
|
||||
KC_HOSTNAME_STRICT_HTTPS: 'false'
|
||||
|
||||
#KC_FEATURES: scripts non utilizzato piu
|
||||
KC_LOG_LEVEL: info
|
||||
KC_METRICS_ENABLED: 'true'
|
||||
KC_HEALTH_ENABLED: 'true'
|
||||
command: start-dev
|
||||
ports:
|
||||
- '8080:8080'
|
||||
depends_on:
|
||||
- pgsql
|
||||
networks:
|
||||
default:
|
||||
ipv4_address: 172.19.0.7
|
||||
|
||||
|
||||
volumes:
|
||||
loki-data:
|
||||
grafana-data:
|
||||
postgresql-data:
|
||||
38
develop/init-db.sh
Executable file
38
develop/init-db.sh
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Funzione per creare un database e un utente limitato
|
||||
# Argomenti: NOME_DB, NOME_UTENTE, PASSWORD_UTENTE
|
||||
create_limited_user_and_db() {
|
||||
local database=$1
|
||||
local user=$2
|
||||
local password=$3
|
||||
|
||||
echo " Configurazione database: $database per l'utente: $user"
|
||||
|
||||
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "postgres" <<-EOSQL
|
||||
CREATE DATABASE $database;
|
||||
CREATE USER $user WITH PASSWORD '$password';
|
||||
\c $database
|
||||
REVOKE ALL ON SCHEMA public FROM PUBLIC;
|
||||
GRANT USAGE ON SCHEMA public TO $user;
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO $user;
|
||||
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO $user;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO $user;
|
||||
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT USAGE, SELECT ON SEQUENCES TO $user;
|
||||
EOSQL
|
||||
}
|
||||
|
||||
echo "Inizio inizializzazione database multipli..."
|
||||
|
||||
# 1. Database per Keycloak (L'utente admin ha già i permessi perché proprietario del DB principale)
|
||||
# Non serve crearlo qui se è già definito in POSTGRES_DB nel docker-compose,
|
||||
# ma assicuriamoci che esista.
|
||||
echo "Verifica database Keycloak..."
|
||||
|
||||
# 2. Creazione Microservizi con permessi LIMITATI (Sola gestione DATI, no struttura)
|
||||
# Formato: nome_db, nome_utente, password
|
||||
create_limited_user_and_db "negozi" "user_negozi" "Anker26!"
|
||||
create_limited_user_and_db "keycloak" "user_keycloak" "Anker26!"
|
||||
|
||||
echo "Inizializzazione completata con successo!"
|
||||
31
develop/istruzioni.txt
Normal file
31
develop/istruzioni.txt
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
|
||||
chmod +x init-db.sh
|
||||
|
||||
docker compose up --detach --no-recreate <nome_del_nuovo_servizio>
|
||||
|
||||
docker logs -f keycloak
|
||||
|
||||
docker-compose up -d keycloak
|
||||
|
||||
Per cancellare tutto in un colpo solo (container, reti, volumi e immagini):
|
||||
docker compose down -v --rmi all --remove-orphans
|
||||
|
||||
docker compose up -d
|
||||
docker-compose up -d --no-deps keycloak
|
||||
|
||||
Cosa fa questo comando?
|
||||
• up -d: Rileva i cambiamenti nel file docker-compose.yml, ricrea il container solo se necessario e lo avvia in background.
|
||||
• --no-deps: Impedisce a Docker di riavviare anche i servizi da cui Keycloak dipende (come pgsql), velocizzando l'operazione.
|
||||
• keycloak: Specifica di agire solo sul servizio Keycloak.
|
||||
|
||||
|
||||
Obiettivo Comando
|
||||
Controllare lo stato docker compose ps
|
||||
Vedere i log (anche se in background) docker compose logs -f
|
||||
Spegnere tuttodocker compose down
|
||||
Riavviare i servizidocker compose restart
|
||||
|
||||
|
||||
Creative26!
|
||||
Anker26!
|
||||
43
develop/loki-config.yaml
Normal file
43
develop/loki-config.yaml
Normal file
@@ -0,0 +1,43 @@
|
||||
auth_enabled: false
|
||||
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
|
||||
ingester:
|
||||
lifecycler:
|
||||
ring:
|
||||
kvstore:
|
||||
store: inmemory
|
||||
replication_factor: 1
|
||||
chunk_idle_period: 5m
|
||||
chunk_retain_period: 30s
|
||||
wal:
|
||||
dir: /loki/wal
|
||||
max_transfer_retries: 0
|
||||
|
||||
schema_config:
|
||||
configs:
|
||||
- from: 2025-08-08
|
||||
store: tsdb
|
||||
object_store: filesystem
|
||||
schema: v13
|
||||
index:
|
||||
prefix: index_
|
||||
period: 24h
|
||||
|
||||
storage_config:
|
||||
tsdb_shipper:
|
||||
active_index_directory: /loki/tsdb-index
|
||||
cache_location: /loki/tsdb-cache
|
||||
shared_store: filesystem
|
||||
|
||||
filesystem:
|
||||
directory: /loki/chunks
|
||||
|
||||
limits_config:
|
||||
allow_structured_metadata: true
|
||||
retention_period: 168h # 7 giorni, puoi aumentare se vuoi
|
||||
|
||||
compactor:
|
||||
working_directory: /loki/compactor
|
||||
shared_store: filesystem
|
||||
32
develop/test-kafkla.sh
Normal file
32
develop/test-kafkla.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
TOPIC_NAME="test-topic"
|
||||
MESSAGE="Hello Kafka without Zookeeper!"
|
||||
|
||||
echo "🚀 Avvio Kafka in background..."
|
||||
docker-compose up -d
|
||||
|
||||
echo "⏳ Attendo 10 secondi che Kafka sia pronto..."
|
||||
sleep 10
|
||||
|
||||
echo "📌 Creo il topic '$TOPIC_NAME'..."
|
||||
docker exec kafka kafka-topics.sh \
|
||||
--bootstrap-server localhost:9092 \
|
||||
--create --topic "$TOPIC_NAME" \
|
||||
--partitions 1 --replication-factor 1
|
||||
|
||||
echo "📋 Lista dei topic disponibili:"
|
||||
docker exec kafka kafka-topics.sh \
|
||||
--bootstrap-server localhost:9092 --list
|
||||
|
||||
echo "✉️ Invio un messaggio al topic..."
|
||||
echo "$MESSAGE" | docker exec -i kafka kafka-console-producer.sh \
|
||||
--broker-list localhost:9092 --topic "$TOPIC_NAME"
|
||||
|
||||
echo "📥 Lettura del messaggio dal topic:"
|
||||
docker exec kafka kafka-console-consumer.sh \
|
||||
--bootstrap-server localhost:9092 \
|
||||
--topic "$TOPIC_NAME" --from-beginning --timeout-ms 5000
|
||||
|
||||
echo "✅ Test completato!"
|
||||
Reference in New Issue
Block a user