services:
  mock-event-publisher:
    image: standardnotes/mock-event-publisher
    ports:
    - 3124:3000
    environment:
      LOG_LEVEL: debug
      NODE_ENV: production
      VERSION: snjs-test
      SNS_TOPIC_ARN: arn:aws:sns:us-east-1:000000000000:payments-local-topic
      SNS_ENDPOINT: http://localstack:4566
      SNS_DISABLE_SSL: true
      SNS_SECRET_ACCESS_KEY: x
      SNS_ACCESS_KEY_ID: x
      SNS_AWS_REGION: us-east-1
      NEW_RELIC_ENABLED: false
    networks:
      - standardnotes_self_hosted

  server:
    build: .
    env_file: .github/ci.env
    environment:
      DB_TYPE: "${DB_TYPE}"
      CACHE_TYPE: "${CACHE_TYPE}"
    container_name: server-ci
    ports:
      - 3123:3000
      - 3125:3104
    volumes:
      - ./logs:/var/lib/server/logs
    networks:
      - standardnotes_self_hosted

  localstack:
    image: localstack/localstack:1.4
    container_name: localstack-ci
    expose:
      - 4566
    restart: unless-stopped
    environment:
      - SERVICES=sns,sqs
      - HOSTNAME_EXTERNAL=localstack
      - LS_LOG=warn
    volumes:
      - ./docker/localstack_bootstrap.sh:/etc/localstack/init/ready.d/localstack_bootstrap.sh
    networks:
      - standardnotes_self_hosted

  db:
    image: mysql:8
    container_name: db-ci
    env_file: .github/ci.env
    expose:
      - 3306
    restart: unless-stopped
    command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
    volumes:
      - ./data/mysql:/var/lib/mysql
      - ./data/import:/docker-entrypoint-initdb.d
    networks:
      - standardnotes_self_hosted

  cache:
    image: redis:6.0-alpine
    container_name: cache-ci
    volumes:
      - ./data/redis/:/data
    expose:
      - 6379
    restart: unless-stopped
    networks:
      - standardnotes_self_hosted

networks:
  standardnotes_self_hosted:
    name: standardnotes_self_hosted
