mashirozx/mastodon

View on GitHub
docker-compose.dev.yml

Summary

Maintainability
Test Coverage
version: '3'

services:
#  app:
#    build:
#      context: .
#      dockerfile: Dockerfile
#      args:
#        # Update 'VARIANT' to pick a version of Ruby: 3, 3.1, 3.0, 2, 2.7, 2.6
#        # Append -bullseye or -buster to pin to an OS version.
#        # Use -bullseye variants on local arm64/Apple Silicon.
#        VARIANT: '3.0-bullseye'
#        # Optional Node.js version to install
#        NODE_VERSION: '14'
#    volumes:
#      - ..:/workspaces/mastodon:cached
#    environment:
#      RAILS_ENV: development
#      NODE_ENV: development
#
#      REDIS_HOST: redis
#      REDIS_PORT: '6379'
#      DB_HOST: db
#      DB_USER: postgres
#      DB_PASS: postgres
#      DB_PORT: '5432'
#      ES_ENABLED: 'false'
#      ES_HOST: es
#      ES_PORT: '9200'
#    # Overrides default command so things don't shut down after the process ends.
#    command: sleep infinity
#    networks:
#      - external_network
#      - internal_network
#    user: vscode

  db:
    image: postgres:14-alpine
    restart: unless-stopped
    volumes:
      - postgres-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: postgres
      POSTGRES_DB: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_HOST_AUTH_METHOD: trust
    command: ["postgres", "-c", "log_statement=all"]
    ports:
      - 5432:5432
    networks:
      - internal_network
      - external_network

  redis:
    image: redis:6-alpine
    restart: unless-stopped
    volumes:
      - redis-data:/data
    ports:
      - '6379:6379'
    networks:
      - internal_network
      - external_network

  es:
    image: mashirozx/elasticsearch-cnplugin:latest
    restart: unless-stopped
    environment:
      ES_JAVA_OPTS: -Xms512m -Xmx512m
      cluster.name: es-mastodon
      discovery.type: single-node
      bootstrap.memory_lock: 'true'
      ingest.geoip.downloader.enabled: 'false'
    volumes:
      - es-data:/usr/share/elasticsearch/data
    networks:
      - internal_network
      - external_network
    ports:
      - '9200:9200'
    ulimits:
      memlock:
        soft: -1
        hard: -1

  kibana:
    image: docker.elastic.co/kibana/kibana:7.17.4
    restart: unless-stopped
    environment:
#      - SERVERNAME=es-mastodon
      - ELASTICSEARCH_HOSTS=http://es:9200
    volumes:
      - kibana-data:/usr/share/kibana/data
    networks:
      - internal_network
      - external_network
    ports:
      - 5601:5601
    healthcheck:
      test:
        [
          "CMD-SHELL",
          "curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
        ]
      interval: 10s
      timeout: 10s
      retries: 120
    depends_on:
      - es

volumes:
  postgres-data:
  redis-data:
  es-data:
  kibana-data:

networks:
  external_network:
  internal_network:
    internal: true