version: '2.4'

volumes:
  assets:
  mysql_data:
  node_modules:

services:
  nginx:
    build:
      dockerfile: tools/docker/Dockerfile
      context: .
      target: nginx
    volumes:
      - assets:/app/web/themes/custom/opdavies/build
      - node_modules:/app/web/themes/custom/opdavies/node_modules
      - ./:/app
    depends_on:
      php:
        condition: service_started
    ports:
      - 80:80

  php:
    build:
      context: .
      dockerfile: tools/docker/Dockerfile
      target: dev
    image: ghcr.io/opdavies/oliverdavies-uk-php:7.4-alpine
    volumes:
      - ./:/app
    env_file:
      - .docker.env
    depends_on:
      mysql:
        condition: service_healthy

  mysql:
    image: mariadb:10
    volumes:
      - mysql_data:/var/lib/mysql
      - ./tools/assets/development:/docker-entrypoint-initdb.d
    env_file:
      - .docker.env
    healthcheck:
      test: ["CMD-SHELL", "bash", "-c", "echo > /dev/tcp/localhost/3306"]
      interval: 1s

  node:
    image: node:14-alpine
    working_dir: /node
    entrypoint: sh
    volumes:
      - assets:/node/build
      - node_modules:/node/node_modules
      - ./config:/node/config
      - ./web/themes/custom/opdavies/assets:/node/assets
      - ./web/themes/custom/opdavies/package-lock.json:/node/package-lock.json
      - ./web/themes/custom/opdavies/package.json:/node/package.json
      - ./web/themes/custom/opdavies/postcss.config.js:/node/postcss.config.js
      - ./web/themes/custom/opdavies/tailwindcss:/node/tailwindcss
      - ./web/themes/custom/opdavies/tailwind.config.js:/node/tailwind.config.js
      - ./web/themes/custom/opdavies/templates:/node/templates
      - ./web/themes/custom/opdavies/webpack.config.js:/node/webpack.config.js