################################################################################
#
#  This file is part of SplashSync Project.
# 
#  Copyright (C) Splash Sync <www.splashsync.com>
# 
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# 
#  For the full copyright and license information, please view the LICENSE
#  file that was distributed with this source code.
# 
#  @author Bernard Paquier <contact@splashsync.com>
#
################################################################################

################################################################################
# Docker Compose File
#
# This Docker File intend to Create a Complete Dev Environment
# for Splash Modules on Prestashop
#
# To us different PS Version configured, you need to add hosts to /etc/hosts
# 
# 172.101.0.10        latest.wordpress.local
# 172.101.0.61        wp6-1.wordpress.local
# 172.101.0.60        wp6-0.wordpress.local
# 172.101.0.59        wp5-9.wordpress.local
# 172.101.0.100       toolkit.wordpress.local
# 172.101.0.200       phpmyadmin.wordpress.local
#
################################################################################


version: '3'

services:
    
    ################################################################################
    # MySQL Container    
    mysql:
        image: mysql:5.7
        container_name: wordpress_mysql
        logging: { driver: "none" }
        environment:
            - "MYSQL_ROOT_PASSWORD=admin"
            - "MYSQL_DATABASE=wordpress"
        networks:
            - wordpress

    ################################################################################
    # WordPress Latest
    wordpress:
        image: wordpress
        container_name: latest.wordpress.local
        depends_on:
            - mysql
        volumes:
         - "./:/var/www/html/wp-content/plugins/splash-connector"
         - "./.git/:/var/www/html/wp-content/plugins/splash-connector/.git:ro"
        environment:
            - WORDPRESS_VERSION=latest
            - WORDPRESS_URL=latest.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_latest_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync            
            - SPLASH_WS_ID=ThisIsWpLatestKey
            - SPLASH_WS_KEY=ThisTokenIsNotSoSecretChangeIt
            - SPLASH_WS_HOST=http://toolkit.wordpress.local/ws/soap
        command: sh /var/www/html/wp-content/plugins/splash-connector/docker/docker-entrypoint.sh
        hostname: latest.wordpress.local
        networks:
            wordpress:      { ipv4_address: 172.101.0.10 }
            splashsync:     { aliases: [ latest.wordpress.local ] }

    ################################################################################
    # WordPress 6.1
    wordpress-6.1:
        image: wordpress:beta-6.1
        container_name: wp6-1.wordpress.local
        depends_on:
            - mysql
        volumes:
            - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
            - "./.git/:/var/www/html/wp-content/plugins/splash-connector/.git:ro"
        environment:
            - WORDPRESS_VERSION=6.1
            - WORDPRESS_URL=wp6-1.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_6_1_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp61Key
            - SPLASH_WS_KEY=ThisTokenIsNotSoSecretChangeIt
            - SPLASH_WS_HOST=http://toolkit.wordpress.local/ws/soap
        command: sh /var/www/html/wp-content/plugins/splash-connector/docker/docker-entrypoint.sh
        hostname: wp6-1.wordpress.local
        networks:
            wordpress:      { ipv4_address: 172.101.0.61 }
            splashsync:     { aliases: [ wp6-1.wordpress.local ] }

    ################################################################################
    # WordPress 6.0
    wordpress-6.0:
        image: wordpress:6.0
        container_name: wp6-0.wordpress.local
        depends_on:
            - mysql
        volumes:
            - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
            - "./.git/:/var/www/html/wp-content/plugins/splash-connector/.git:ro"
        environment:
            - WORDPRESS_VERSION=6.0
            - WORDPRESS_URL=wp6-0.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_6_0_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp60Key
            - SPLASH_WS_KEY=ThisTokenIsNotSoSecretChangeIt
            - SPLASH_WS_HOST=http://toolkit.wordpress.local/ws/soap
        command: sh /var/www/html/wp-content/plugins/splash-connector/docker/docker-entrypoint.sh
        hostname: wp6-0.wordpress.local
        networks:
            wordpress:      { ipv4_address: 172.101.0.60 }
            splashsync:     { aliases: [ wp6-0.wordpress.local ] }

    ################################################################################
    # WordPress 5.9
    wordpress-5.9:
        image: wordpress:5.9
        container_name: wp5-9.wordpress.local
        depends_on:
            - mysql
        volumes:
            - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
            - "./.git/:/var/www/html/wp-content/plugins/splash-connector/.git:ro"
        environment:
            - WORDPRESS_VERSION=5.9
            - WORDPRESS_URL=wp5-9.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_5_9_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp59Key
            - SPLASH_WS_KEY=ThisTokenIsNotSoSecretChangeIt
            - SPLASH_WS_HOST=http://toolkit.wordpress.local/ws/soap
        command: sh /var/www/html/wp-content/plugins/splash-connector/docker/docker-entrypoint.sh
        hostname: wp5-9.wordpress.local
        networks:
            wordpress:      { ipv4_address: 172.101.0.59 }
            splashsync:     { aliases: [ wp5-9.wordpress.local ] }

    ################################################################################
    # Splash Toolkit Container
    toolkit:
        image: 'splashsync/toolkit'
        container_name: wordpress-toolkit
        logging: { driver: "none" }
        volumes:
            # Specify Local Configuration File
            - './docker/toolkit/splash.yml:/app/config/packages/splash.yml:ro'
        hostname:           toolkit.wordpress.local
        command:            ["php", "/app/bin/console", "server:run", "172.101.0.100:80"]
        networks:
            wordpress:      { ipv4_address: 172.101.0.100, aliases: [ toolkit.wordpress.local ] }
            splashsync:     { aliases: [ toolkit.wordpress.local ] }

    ################################################################################
    # PhpMyAdmin Container
    phpmyadmin:
        image: phpmyadmin/phpmyadmin:5
        container_name: wordpress_phpmyadmin
        logging: { driver: "none" }
        depends_on:
            - mysql
        environment:
            - PMA_HOST=mysql
            - MYSQL_USER=admin
            - MYSQL_ROOT_PASSWORD=admin
            - MYSQL_PASSWORD=admin
        networks:
            wordpress:      { ipv4_address: 172.101.0.200, aliases: [ phpmyadmin.wordpress.local ] }

networks:
    ################################################################################
    # Default Private Network
    wordpress:
        driver: bridge
        ipam:
            config:
                - subnet: 172.101.0.0/24
    ################################################################################
    # External Splash Network
    splashsync:
        external: true