JustPaste.it

version: '3.6'

networks:
  backend:
    driver:
      overlay
  frontend:
    driver:
      overlay

volumes:
  app_vol:
  redis_db:
  mysql_db:
  portainer_data:

services:
  portainer:
    container_name: portainer
    image: portainer/portainer
    ports:
      - 9001:9000
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - portainer_data:/data
    networks: 
      - frontend
      - backend

  proxy:
    container_name: proxy
    image: nginx:alpine
    volumes:
      - app_vol:/var/www/html
      - ./docker/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
      - ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 80:80
    networks:
      - backend
      - frontend

  app:
    container_name: app
    image: httpd:alpine
    volumes:
      - app_vol:/var/www/html
      - ./docker/apache/http-vhost.conf:/usr/local/apache2/conf/extra/httpd-vhosts.conf
      - ./docker/apache/httpd.conf:/usr/local/apache2/conf/httpd.conf
    ports:
      - 8000:80
    networks:
      - backend

  php-fpm:
    container_name: php-fpm
    image: php:7.3-fpm-alpine
    environment:
      PHP_DEBUGGER: "xdebug"
    volumes:
      - app_vol:/var/www/html
      - ./docker/php/conf.d/php.ini:/usr/local/etc/php/conf.d/php.ini
      # - ./docker/php/install.sh:/var/www/html/run.sh
    ports:
      - 9000:9000
    networks:
      - backend

  mysql:
    container_name: mysql
    image: mysql:8.0.18
    environment:
      MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
      MYSQL_DATABASE: "laravel"
      #MYSQL_ROOT_PASSWORD: "true"
    volumes: 
      - mysql_db:/var/lib/mysql
    ports:
      - 3306:3306
    networks:
      - backend

  redis:
    container_name: redis
    image: redis:alpine
    volumes: 
      - redis_db:/data/redis
      - ./docker/redis/redis.conf:/data/redis/redis.conf
    command: "redis-server /data/redis/redis.conf"
    ports:
      - 6379:6379
    networks:
      - backend
      - frontend