Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Konfigurering av Docker Compose-filen | Övervakning och Loggning i DevOps
Introduktion till DevOps

bookKonfigurering av Docker Compose-filen

Nu när alla nödvändiga konfigurationer är på plats — för Filebeat, Logstash och Flask-applikationen — är det dags att samla dem och köra dem som ett enda system. För detta använder vi Docker Compose.

Note
Definition

Docker Compose är ett verktyg som låter dig definiera alla nödvändiga containrar i en enda YAML-fil och köra dem med ett enda kommando.

Istället för att skriva ett separat docker run-kommando för varje tjänst, skriver du bara deras konfigurationer i docker-compose.yml och kör allt tillsammans.

En enkel docker-compose.yml-fil ser ut så här:

docker-compose.yml

docker-compose.yml

copy

Nu skapar vi en komplett fil steg för steg och förklarar varje container längs vägen.

Flask-applikation

Detta är din huvudapplikation som genererar loggar.

docker-compose.yml

docker-compose.yml

copy

Detta block instruerar Docker att bygga containern från den aktuella mappen (där din Dockerfile finns).

Containern kommer att heta flask-app. Raden volumes kopplar den lokala mappen ./logs till /logs inuti containern. På så sätt sparas alla loggar som skapas av applikationen både i containern och på din dator.

Applikationen körs i containern på port 5000, men vi mappar den till port 5050 på din maskin så att du kan komma åt den i din webbläsare på http://localhost:5050.

Filebeat

Filebeat fungerar som en agent som övervakar loggfiler och skickar nya poster till Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat körs från den officiella 8.15.0-avbildningen. Den körs som användaren root för att ha behörighet att läsa loggfiler.

Vi monterar mappen ./logs i skrivskyddat läge samt konfigurationsfilen filebeat.yml. Detta anger för Filebeat vilka loggar som ska övervakas och vart de ska skickas. depends_on säkerställer att Filebeat startar först efter att applikationen och Logstash är igång.

Logstash

Logstash tar emot loggar från Filebeat, bearbetar dem (till exempel tolkar JSON) och vidarebefordrar dem till Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denna container använder den officiella Logstash-bilden.

Vi monterar konfigurationsfilen logstash.conf, som anger hur Logstash ska bearbeta inkommande loggar. Containern startar först när Elasticsearch körs, eftersom den behöver en destination för de bearbetade loggarna.

Port 5044 exponeras så att Filebeat kan skicka data till Logstash.

Elasticsearch

Elasticsearch lagrar loggar som dokument och möjliggör snabb sökning bland dem.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Elasticsearch-bilden version 8.15.0.

  • discovery.type=single-node anger att vi kör ett en-nods-kluster (tillräckligt för lokal testning);
  • xpack.security.enabled=false inaktiverar säkerhet så att du inte behöver hantera användarnamn och lösenord;
  • ES_JAVA_OPTS begränsar Java-processens minnesanvändning.

Tjänsten är tillgänglig på port 9200 via http://localhost:9200.

Kibana

Kibana är ett webbgränssnitt för Elasticsearch. Det hjälper till att visualisera loggar och skapa instrumentpaneler.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Kibana-avbilden.

Port 5601 exponeras så att du kan komma åt Kibana i din webbläsare på http://localhost:5601.

ELASTICSEARCH_HOSTS pekar Kibana mot vår Elasticsearch-container så att den kan hämta och visa data.

Slutlig docker-compose.yml

Här är den kompletta Docker Compose-filen med alla tjänster anslutna i rätt ordning:

docker-compose.yml

docker-compose.yml

copy

Denna docker-compose.yml startar alla tjänster i rätt ordning. Flask-applikationen genererar loggar, Filebeat samlar in dem och skickar dem till Logstash, Logstash bearbetar loggarna och vidarebefordrar dem till Elasticsearch, och Kibana tillhandahåller ett webbgränssnitt för att visa och analysera data.

Det enda som återstår är att köra systemet och testa det, vilket kommer att behandlas i nästa kapitel.

1. Vad är huvudsyftet med Docker Compose i denna konfiguration?

2. Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

question mark

Vad är huvudsyftet med Docker Compose i denna konfiguration?

Select the correct answer

question mark

Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

bookKonfigurering av Docker Compose-filen

Svep för att visa menyn

Nu när alla nödvändiga konfigurationer är på plats — för Filebeat, Logstash och Flask-applikationen — är det dags att samla dem och köra dem som ett enda system. För detta använder vi Docker Compose.

Note
Definition

Docker Compose är ett verktyg som låter dig definiera alla nödvändiga containrar i en enda YAML-fil och köra dem med ett enda kommando.

Istället för att skriva ett separat docker run-kommando för varje tjänst, skriver du bara deras konfigurationer i docker-compose.yml och kör allt tillsammans.

En enkel docker-compose.yml-fil ser ut så här:

docker-compose.yml

docker-compose.yml

copy

Nu skapar vi en komplett fil steg för steg och förklarar varje container längs vägen.

Flask-applikation

Detta är din huvudapplikation som genererar loggar.

docker-compose.yml

docker-compose.yml

copy

Detta block instruerar Docker att bygga containern från den aktuella mappen (där din Dockerfile finns).

Containern kommer att heta flask-app. Raden volumes kopplar den lokala mappen ./logs till /logs inuti containern. På så sätt sparas alla loggar som skapas av applikationen både i containern och på din dator.

Applikationen körs i containern på port 5000, men vi mappar den till port 5050 på din maskin så att du kan komma åt den i din webbläsare på http://localhost:5050.

Filebeat

Filebeat fungerar som en agent som övervakar loggfiler och skickar nya poster till Logstash.

docker-compose.yml

docker-compose.yml

copy

Filebeat körs från den officiella 8.15.0-avbildningen. Den körs som användaren root för att ha behörighet att läsa loggfiler.

Vi monterar mappen ./logs i skrivskyddat läge samt konfigurationsfilen filebeat.yml. Detta anger för Filebeat vilka loggar som ska övervakas och vart de ska skickas. depends_on säkerställer att Filebeat startar först efter att applikationen och Logstash är igång.

Logstash

Logstash tar emot loggar från Filebeat, bearbetar dem (till exempel tolkar JSON) och vidarebefordrar dem till Elasticsearch.

docker-compose.yml

docker-compose.yml

copy

Denna container använder den officiella Logstash-bilden.

Vi monterar konfigurationsfilen logstash.conf, som anger hur Logstash ska bearbeta inkommande loggar. Containern startar först när Elasticsearch körs, eftersom den behöver en destination för de bearbetade loggarna.

Port 5044 exponeras så att Filebeat kan skicka data till Logstash.

Elasticsearch

Elasticsearch lagrar loggar som dokument och möjliggör snabb sökning bland dem.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Elasticsearch-bilden version 8.15.0.

  • discovery.type=single-node anger att vi kör ett en-nods-kluster (tillräckligt för lokal testning);
  • xpack.security.enabled=false inaktiverar säkerhet så att du inte behöver hantera användarnamn och lösenord;
  • ES_JAVA_OPTS begränsar Java-processens minnesanvändning.

Tjänsten är tillgänglig på port 9200 via http://localhost:9200.

Kibana

Kibana är ett webbgränssnitt för Elasticsearch. Det hjälper till att visualisera loggar och skapa instrumentpaneler.

docker-compose.yml

docker-compose.yml

copy

Vi använder den officiella Kibana-avbilden.

Port 5601 exponeras så att du kan komma åt Kibana i din webbläsare på http://localhost:5601.

ELASTICSEARCH_HOSTS pekar Kibana mot vår Elasticsearch-container så att den kan hämta och visa data.

Slutlig docker-compose.yml

Här är den kompletta Docker Compose-filen med alla tjänster anslutna i rätt ordning:

docker-compose.yml

docker-compose.yml

copy

Denna docker-compose.yml startar alla tjänster i rätt ordning. Flask-applikationen genererar loggar, Filebeat samlar in dem och skickar dem till Logstash, Logstash bearbetar loggarna och vidarebefordrar dem till Elasticsearch, och Kibana tillhandahåller ett webbgränssnitt för att visa och analysera data.

Det enda som återstår är att köra systemet och testa det, vilket kommer att behandlas i nästa kapitel.

1. Vad är huvudsyftet med Docker Compose i denna konfiguration?

2. Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

question mark

Vad är huvudsyftet med Docker Compose i denna konfiguration?

Select the correct answer

question mark

Vilken tjänst ansvarar för att samla in loggfiler från Flask-applikationen och skicka dem till Logstash?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 4. Kapitel 5
some-alt