version: '2'

services:
  service-ram:
    image: registry.forge.grandlyon.com/web-et-numerique/pamn_plateforme-des-acteurs-de-la-mediation-numerique/pamn_server:dev    
    container_name: resin-back
    ports:
      - ${SERVICE_API_BIND_PORT}:3000
    extra_hosts:
      - 'sen.grandlyon.com:10.128.16.229'
    volumes:
      - ./.migrate:/app/.migrate
    environment:
      MONGO_NON_ROOT_USERNAME: ${MONGO_NON_ROOT_USERNAME}
      MONGO_NON_ROOT_PASSWORD: ${MONGO_NON_ROOT_PASSWORD}
      MONGO_DB_HOST_AND_PORT: ${MONGO_DB_HOST_AND_PORT}
      JWT_SECRET: ${JWT_SECRET}
      SALT: ${SALT}
      MAIL_URL: ${MAIL_URL}
      MAIL_TOKEN: ${MAIL_TOKEN}
      MAIL_CONTACT: ${MAIL_CONTACT}
      NODE_ENV: ${NODE_ENV}
      APTIC_TOKEN: ${APTIC_TOKEN}
      GHOST_HOST_AND_PORT: ${GHOST_HOST_AND_PORT}
      GHOST_ADMIN_API_KEY: ${GHOST_ADMIN_API_KEY}
      GHOST_CONTENT_API_KEY: ${GHOST_CONTENT_API_KEY}
      ELASTICSEARCH_NODE: ${ELASTICSEARCH_NODE}
      ELASTICSEARCH_USERNAME: ${ELASTICSEARCH_USERNAME}
      ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASSWORD}
    restart: unless-stopped
    networks:
      - backend
    depends_on:
      - database-ram

  database-ram:
    image: bitnami/mongodb:4.2.3
    user: root
    container_name: resin-db
    environment:
      MONGODB_ROOT_PASSWORD: ${MONGO_ROOT_PASSWORD}
      MONGODB_USERNAME: ${MONGO_NON_ROOT_USERNAME}
      MONGODB_PASSWORD: ${MONGO_NON_ROOT_PASSWORD}
      MONGODB_DATABASE: ram
    restart: unless-stopped
    networks:
      - backend
    ports:
      - ${MONGO_PORT}:27017
    volumes:
      - db-ram:/bitnami

  mongo-express:
    image: mongo-express
    restart: unless-stopped    
    container_name: resin-mongo-express
    depends_on:
      - database-ram
    networks:
      - backend
    ports:
      - ${ME_PORT}:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: ${MONGO_ROOT_PASSWORD}
      ME_CONFIG_BASICAUTH_USERNAME: ${ME_CONFIG_BASICAUTH_USERNAME}
      ME_CONFIG_BASICAUTH_PASSWORD: ${ME_CONFIG_BASICAUTH_PASSWORD}
      ME_CONFIG_MONGODB_SERVER: database-ram

  ghost:
    image: ghost:latest
    restart: always
    container_name: resin-ghost
    ports:
      - ${GHOST_PORT}:2368
    environment:
      # see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables
      database__client: mysql
      database__connection__host: ghost-db
      database__connection__user: root
      database__connection__password: ${GHOST_DB_PASSWORD}
      database__connection__database: ghost
      # this url value is just an example, and is likely wrong for your environment!
      url: http://localhost:${GHOST_PORT}
    depends_on:
      - ghost-db
    volumes:
      - ghost-content:/var/lib/ghost/content

  ghost-db:
    image: mysql:5.7
    container_name: resin-ghost-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${GHOST_DB_PASSWORD}
    volumes:
      - db-ghost:/var/lib/mysql

  es01:
    image: elasticsearch:7.16.2
    restart: unless-stopped
    container_name: resin-es
    environment:
      node.name: es01
      cluster.name: es-docker-cluster
      discovery.type: single-node
      xpack.security.enabled: ${ELASTIC_SECURITY}
      ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD}
    volumes:
      - db-elastic:/usr/share/elasticsearch/data
    networks:
      - elastic
    ports:
      - ${ELASTICSEARCH_PORT}:9200

volumes:
  db-ram:
    driver: local
  db-ghost:
    driver: local
  db-elastic:
    driver: local
  ghost-content:
    driver: local

networks:
  backend:
    driver: bridge
  elastic:
    driver: bridge
