Skip to content

Instantly share code, notes, and snippets.

@david-botelho-mariano
Last active March 18, 2020 13:50
Show Gist options
  • Save david-botelho-mariano/f66703e9583ccc92949ccde19c69c29c to your computer and use it in GitHub Desktop.
Save david-botelho-mariano/f66703e9583ccc92949ccde19c69c29c to your computer and use it in GitHub Desktop.
flask, kibana, elastic search e apm server no docker
version: '3'
services:
apm-server:
#define as configuracoes do servidor apm (igual a documentacao oficial)
image: docker.elastic.co/apm/apm-server:7.6.1
#link da imagem docker que sera baixado
depends_on:
- elasticsearch
- kibana
cap_add: ["CHOWN", "DAC_OVERRIDE", "SETGID", "SETUID"]
cap_drop: ["ALL"]
ports:
- 8200:8200
#porta que sera exposta
networks:
- elastic
#subnet que sera utilizada
deploy:
mode: replicated
replicas: 2
#quantidade de copias da aplicacao
command: >
apm-server -e
-E apm-server.rum.enabled=true
-E setup.kibana.host=kibana:5601
-E setup.template.settings.index.number_of_replicas=0
-E apm-server.kibana.enabled=true
-E apm-server.kibana.host=kibana:5601
-E output.elasticsearch.hosts=["elasticsearch:9200"]
healthcheck:
#faz testes periodicos para ver se o servico esta funcionando
interval: 10s
retries: 12
test: curl --write-out 'HTTP %{http_code}' --fail --silent --output /dev/null http://localhost:8200/
elasticsearch:
#define as configuracoes do elastic search (igual a documentacao oficial)
image: docker.elastic.co/elasticsearch/elasticsearch:7.6.1
environment:
- bootstrap.memory_lock=true
- cluster.name=docker-cluster
- cluster.routing.allocation.disk.threshold_enabled=false
- discovery.type=single-node
- ES_JAVA_OPTS=-XX:UseAVX=2 -Xms1g -Xmx1g
ulimits:
memlock:
hard: -1
soft: -1
volumes:
- esdata:/usr/share/elasticsearch/data
#define o driver de volume que será utilizado
ports:
- 9200:9200
#portas que serao expostas
networks:
- elastic
#subnet que sera utilizada
deploy:
mode: replicated
replicas: 1
#quantidade de copias do servico
healthcheck:
#faz testes periodicos para ver se o servico esta funcionando
interval: 20s
retries: 10
test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"'
kibana:
#configuracao do kibana
image: docker.elastic.co/kibana/kibana:7.6.1
#link da imagem docker do kibana
depends_on:
- elasticsearch
environment:
#definicao de variaveis do ambiente
ELASTICSEARCH_URL: http://elasticsearch:9200
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
ports:
- 5601:5601
#portas que serao expostas
networks:
- elastic
deploy:
mode: replicated
replicas: 2
#quantidade de replicas do servico
healthcheck:
#faz testes periodicos para ver se o servico esta funcionando
interval: 10s
retries: 20
test: curl --write-out 'HTTP %{http_code}' --fail --silent --output /dev/null http://localhost:5601/api/status
flask:
#define as configuracoes do servidor flask
build: .
#build utilizando o DockerFile como referencia
image: flask-escalavel_flask
#nome da imagem que sera utilizada no docker swarm
ports:
- 5000:5000
#portas que precisam ser abertar
networks:
- elastic
#nome da subnet que sera utilizada
deploy:
mode: replicated
replicas: 2
#define a quantidade de replicas
volumes:
#define o driver de volume que sera utilizado
esdata:
driver: local
networks:
#define o driver de rede que sera utilizado
elastic:
driver: overlay
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment