# This is a Docker Compose configuration
# intended for development purposes only

version: '3'

volumes:
  db: {}

services:
  db:
    image: mysql:8
    environment:
      MYSQL_DATABASE: bookstack-test
      MYSQL_USER: bookstack-test
      MYSQL_PASSWORD: bookstack-test
      MYSQL_RANDOM_ROOT_PASSWORD: 'true'
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - db:/var/lib/mysql
  app:
    build:
      context: .
      dockerfile: ./dev/docker/Dockerfile
    environment:
      DB_CONNECTION: mysql
      DB_HOST: db
      DB_PORT: 3306
      DB_DATABASE: bookstack-test
      DB_USERNAME: bookstack-test
      DB_PASSWORD: bookstack-test
      MAIL_DRIVER: smtp
      MAIL_HOST: mailhog
      MAIL_PORT: 1025
    ports:
      - ${DEV_PORT:-8080}:80
    volumes:
      - ./:/app
    entrypoint: /app/dev/docker/entrypoint.app.sh
  node:
    image: node:alpine
    working_dir: /app
    volumes:
      - ./:/app
    entrypoint: /app/dev/docker/entrypoint.node.sh
  mailhog:
    image: mailhog/mailhog
    ports:
      - ${DEV_MAIL_PORT:-8025}:8025

# This is a Docker Compose configuration
# intended for development purposes only

version: '3'

volumes:
  db: {}

services:
  db:
    image: mysql:8
    environment:
      MYSQL_DATABASE: bookstack-test
      MYSQL_USER: bookstack-test
      MYSQL_PASSWORD: bookstack-test
      MYSQL_RANDOM_ROOT_PASSWORD: 'true'
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - db:/var/lib/mysql
  app:
    build:
      context: .
      dockerfile: ./dev/docker/Dockerfile
    environment:
      DB_CONNECTION: mysql
      DB_HOST: db
      DB_PORT: 3306
      DB_DATABASE: bookstack-test
      DB_USERNAME: bookstack-test
      DB_PASSWORD: bookstack-test
      MAIL_DRIVER: smtp
      MAIL_HOST: mailhog
      MAIL_PORT: 1025
    ports:
      - ${DEV_PORT:-8080}:80
    volumes:
      - ./:/app
    entrypoint: /app/dev/docker/entrypoint.app.sh
  node:
    image: node:alpine
    working_dir: /app
    user: node
    volumes:
      - ./:/app
    entrypoint: /app/dev/docker/entrypoint.node.sh
  mailhog:
    image: mailhog/mailhog
    ports:
      - ${DEV_MAIL_PORT:-8025}:8025

Fix permission with node service by adding node as user
Docker: Fix permission with node service by adding node as user

See: https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user

Fixes the following error:

glob error:
[Error: EACCES: permission denied, scandir '/root/.npm/_logs'] {
  errno: -13,
  code: 'EACCES',
  syscall: 'scandir',
  path: '/root/.npm/_logs'
}
