services: backend: depends_on: - db build: context: . dockerfile: Dockerfile image: backend container_name: backend restart: always command: /bin/sh -c "sleep 5 && venv/bin/python manage.py makemigrations --noinput && venv/bin/python manage.py migrate --noinput && venv/bin/python manage.py collectstatic --noinput && venv/bin/daphne -b 0.0.0.0 -p 80 pong.asgi:application" volumes: - pong:/transcendence/pong ports: - "80:80" networks: - app-network environment: DB_HOST: db DB_PORT: 5432 DB_NAME: ${POSTGRES_DB} DB_USER: ${POSTGRES_USER} DB_PASSWORD: ${POSTGRES_PASSWORD} db: image: postgres:latest container_name: postgres restart: always volumes: - pong_pg_data:/var/lib/postgresql/data ports: - "5432:5432" networks: - app-network environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} es01: image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - pong_logstash_data_01:/usr/share/elasticsearch/data ports: - ${ES_PORT}:9200 networks: - app-network environment: - node.name=es01 - cluster.name=${CLUSTER_NAME} - discovery.type=single-node - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} mem_limit: ${ES_MEM_LIMIT} ulimits: memlock: soft: -1 hard: -1 logstash01: depends_on: - es01 - kibana image: docker.elastic.co/logstash/logstash:${STACK_VERSION} container_name: logstash volumes: - pong_logstash_data_01:/usr/share/logstash/data/logstash.conf ports: - "5044:5044" networks: - app-network environment: - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - ELASTICSEARCH_USERNAME=kibana_system - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD} kibana: image: docker.elastic.co/kibana/kibana:${STACK_VERSION} container_name: kibana volumes: - pong_kibana:/usr/share/kibana/data - pong_logstash_data_01:/usr/share/logstash/data user: root ports: - 5601:5601 networks: - app-network environment: - SERVERNAME=kibana - ELASTICSEARCH_HOSTS=http://elasticsearch:9200 - ELASTICSEARCH_USERNAME=kibana_system - ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD} mem_limit: ${KB_MEM_LIMIT} #healthcheck: #test: ["CMD-SHELL", "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'"] #interval: 20s #timeout: 10s #retries: 120 volumes: pong: driver: local driver_opts: type: none device: ${PROJECT_PATH} o: bind pong_pg_data: driver: local driver_opts: type: none device: ${POSTGRES_DATA_PATH} o: bind pong_es_data_01: driver: local driver_opts: type: none device: ${ES_DATA_PATH} o: bind pong_kibana: driver: local driver_opts: type: none device: ${KIBA_DATA_PATH} o: bind pong_logstash_data_01: driver: local driver_opts: type: none device: ${LSTASH_DATA_PATH} o: bind networks: app-network: driver: bridge