version: "2"

services:
  web:
    image: nginx
    restart: always
    networks:
      default:
        aliases:
          - loc.10ballov
    volumes:
      - ${PROJECTS_DIR}:/usr/share/nginx/html
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - ./config/nginx/includes.d:/etc/nginx/includes.d
      - ./log/nginx:/var/log/nginx
    ports:
      - "80:80"
      - "443:443"
    expose:
      - 80
  php-fpm:
    build:
      context: ./dockerfiles/php-fpm
      args:
        - INSTALL_XDEBUG=${INSTALL_XDEBUG}
        - INSTALL_REDIS=${INSTALL_REDIS}
        - INSTALL_PEAR_MAIL=${INSTALL_PEAR_MAIL}
        - INSTALL_ZIP=${INSTALL_ZIP}
        - INSTALL_BZ2=${INSTALL_BZ2}
        - INSTALL_INTL=${INSTALL_INTL}
        - PHP_OPT_SHORT_OPEN_TAG=${PHP_OPT_SHORT_OPEN_TAG}
        - PHP_OPT_MAX_EXECUTION_TIME=${PHP_OPT_MAX_EXECUTION_TIME}
        - PHP_OPT_MEMORY_LIMIT=${PHP_OPT_MEMORY_LIMIT}
        - PHP_OPT_UPLOAD_MAX_FILESIZE=${PHP_OPT_UPLOAD_MAX_FILESIZE}
    restart: always
    volumes:
     - ${PROJECTS_DIR}:/usr/share/nginx/html
     - ./tmp/php-fpm:/tmp/profiling
    expose:
     - 9000
  php7.1-fpm:
    build:
      context: dockerfiles/php7.1-fpm
      args:
      - INSTALL_XDEBUG=${INSTALL_XDEBUG}
      - INSTALL_REDIS=${INSTALL_REDIS}
      - INSTALL_PEAR_MAIL=${INSTALL_PEAR_MAIL}
      - INSTALL_ZIP=${INSTALL_ZIP}
      - INSTALL_BZ2=${INSTALL_BZ2}
      - INSTALL_INTL=${INSTALL_INTL}
      - PHP_OPT_SHORT_OPEN_TAG=${PHP_OPT_SHORT_OPEN_TAG}
      - PHP_OPT_MAX_EXECUTION_TIME=${PHP_OPT_MAX_EXECUTION_TIME}
      - PHP_OPT_MEMORY_LIMIT=${PHP_OPT_MEMORY_LIMIT}
      - PHP_OPT_UPLOAD_MAX_FILESIZE=${PHP_OPT_UPLOAD_MAX_FILESIZE}
    restart: always
    volumes:
      - ${PROJECTS_DIR}:/usr/share/nginx/html
    expose:
      - 9000
  workspace:
    build:
      context: ./dockerfiles/workspace
      args:
        - PHP_VERSION=${WORKSPACE_PHP_VERSION}
        - PUID=${WORKSPACE_PUID}
        - PGID=${WORKSPACE_PGID}
        - TZ=${WORKSPACE_TIMEZONE}
        - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
        - COMPOSER_AUTH=${WORKSPACE_COMPOSER_AUTH}
        - COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST}
        - INSTALL_WP_CLI=${WORKSPACE_INSTALL_WP_CLI}
        - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
        - INSTALL_SSH=${WORKSPACE_INSTALL_SSH}
        - SSH_PASSPHRAZE=${WORKSPACE_SSH_PASSPHRAZE}
        - INSTALL_FSWATCH=${WORKSPACE_INSTALL_FSWATCH}
        - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
        - NODE_VERSION=${WORKSPACE_NODE_VERSION}
        - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY}
        - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
        - YARN_VERSION=${WORKSPACE_YARN_VERSION}
        - INSTALL_GULP=${WORKSPACE_INSTALL_GULP}
        - INSTALL_MYSQL_CLIENT=${WORKSPACE_INSTALL_MYSQL_CLIENT}
        - INSTALL_PING=${WORKSPACE_INSTALL_PING}
        - INSTALL_PYTHON=${WORKSPACE_INSTALL_PYTHON}
    restart: always
    volumes:
      - ${PROJECTS_DIR}:/var/www
    extra_hosts:
      - "dockerhost:${DOCKER_HOST_IP}"
  workspace_alex2911:
    build:
      context: ./dockerfiles/workspace
      args:
        - PHP_VERSION=${WORKSPACE_PHP_VERSION}
        - PUID=${WORKSPACE_PUID}
        - PGID=${WORKSPACE_PGID}
        - TZ=${WORKSPACE_TIMEZONE}
        - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
        - COMPOSER_AUTH=${WORKSPACE_COMPOSER_AUTH}
        - COMPOSER_REPO_PACKAGIST=${WORKSPACE_COMPOSER_REPO_PACKAGIST}
        - INSTALL_WP_CLI=${WORKSPACE_INSTALL_WP_CLI}
        - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
        - INSTALL_SSH=${WORKSPACE_INSTALL_SSH}
        - SSH_PASSPHRAZE=${WORKSPACE_SSH_PASSPHRAZE}
        - INSTALL_FSWATCH=${WORKSPACE_INSTALL_FSWATCH}
        - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
        - NODE_VERSION=${WORKSPACE_NODE_VERSION}
        - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY}
        - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
        - YARN_VERSION=${WORKSPACE_YARN_VERSION}
        - INSTALL_GULP=${WORKSPACE_INSTALL_GULP}
        - INSTALL_MYSQL_CLIENT=${WORKSPACE_INSTALL_MYSQL_CLIENT}
        - INSTALL_PING=${WORKSPACE_INSTALL_PING}
        - INSTALL_PYTHON=${WORKSPACE_INSTALL_PYTHON}
    restart: always
    volumes:
      - ${PROJECTS_DIR}:/var/www
    extra_hosts:
      - "dockerhost:${DOCKER_HOST_IP}"
  sphinx:
    build: ./dockerfiles/sphinx
    restart: always
    depends_on:
      - db
    command: sh -c 'searchd -c /etc/sphinxsearch/sphinx.conf & sleep 10 && while true; do indexer --rotate --all; sleep 7200; done'
    volumes:
      - /home/dimti/docker-compose-projects/structure/config/sphinx:/etc/sphinxsearch
      - /home/dimti/docker-compose-projects/structure/data/sphinx:/var/lib/sphinx/data
      - /home/dimti/docker-compose-projects/structure/log/sphinx:/var/log/sphinxsearch
    expose:
      - "9306"
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    volumes:
      - database:/var/lib/mysql
      - ./hostfiles:/hostfiles
    ports:
      - "3306:3306"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    environment:
      PMA_HOST: db
      PMA_USER: root
      PMA_PASSWORD: 123456
    ports:
      - "81:80"
  dbpg:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: postgres
    volumes:
      - databasepg:/var/lib/postgresql/data
      - /data/hostfiles:/hostfiles
  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080
  pgadmin:
    image: dpage/pgadmin4
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: info@wpstudio.ru
      PGADMIN_DEFAULT_PASSWORD: postgres
    ports:
      - "83:80"
    volumes:
      - /data/hostfiles/pgadmin:/var/lib/pgadmin
  redis:
    image: redis
    restart: always
    command: [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
    volumes:
      - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
    restart: always
    container_name: elasticsearch
    environment:
      - discovery.type=single-node
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 2g
    volumes:
      - esdata1:/usr/share/elasticsearch/data
    expose:
      - "9200"
      - "9300"
volumes:
  database:
  esdata1: