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} healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 es01: image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: es01 volumes: - pong_logstash_data_01:/usr/share/elasticsearch/data ports: - "127.0.0.1:9200:9200" networks: - app-network environment: - node.name=es01 - cluster.name=${CLUSTER_NAME} - discovery.type=single-node - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - xpack.security.enabled=false - xpack.license.self_generated.type=trial 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: logstash01 volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf ports: - "5044:5044" networks: - app-network environment: - ELASTIC_HOSTS=http://es01:9200 - ELASTIC_USER=${ELASTIC_USERNAME} - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - xpack.monitoring.enabled=false kibana: image: docker.elastic.co/kibana/kibana:${STACK_VERSION} depends_on: - es01 container_name: kibana volumes: - pong_kibana:/usr/share/kibana/data user: "1000:1000" ports: - 5601:5601 networks: - app-network environment: - SERVERNAME=pong.kibana.org - ELASTICSEARCH_HOSTS=http://es01:9200 - ELASTICSEARCH_USERNAME=${ELASTIC_USERNAME} - ELASTICSEARCH_PASSWORD=${ELASTIC_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 pong_es_data_01: driver: local pong_kibana: driver: local pong_logstash_data_01: driver: local networks: app-network: driver: bridge