################################################################################
#
#  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.67        wp6-7.wordpress.local
# 172.101.0.66        wp6-6.wordpress.local
# 172.101.0.100       toolkit.wordpress.local
# 172.101.0.200       phpmyadmin.wordpress.local
#
################################################################################

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.8
    wordpress-6.8:
        image:              wordpress:6.8-php8.3
        container_name:     wp6-8.wordpress.local
        hostname:           wp6-8.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.8
            - WORDPRESS_URL=wp6-8.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_6_8_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp68Key
            - 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
        networks:
            wordpress:      { ipv4_address: 172.101.0.68 }
            splashsync:     { aliases: [ wp6-8.wordpress.local ] }

    ################################################################################
    # WordPress 6.7
    wordpress-6.7:
        image:              wordpress:6.7-php8.3
        container_name:     wp6-7.wordpress.local
        hostname:           wp6-7.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.7
            - WORDPRESS_URL=wp6-7.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_6_7_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp67Key
            - 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
        networks:
            wordpress:      { ipv4_address: 172.101.0.67 }
            splashsync:     { aliases: [ wp6-7.wordpress.local ] }

    ################################################################################
    # WordPress 6.6
    wordpress-6.6:
        image:              wordpress:6.6-php8.2
        container_name:     wp6-6.wordpress.local
        hostname:           wp6-6.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.6
            - WORDPRESS_URL=wp6-6.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_6_6_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp66Key
            - 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
        networks:
            wordpress:      { ipv4_address: 172.101.0.66 }
            splashsync:     { aliases: [ wp6-6.wordpress.local ] }

    ################################################################################
    # Splash Toolkit Container
    toolkit:
        image:              'splashsync/toolkit'
        container_name:     wordpress-toolkit
        logging:            { driver: "none" }
        volumes:
            # Specify Local Configuration File
            - './docker/toolkit/splash.yaml:/app/config/packages/splash.yaml:ro'
        hostname:           toolkit.wordpress.local
        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