################################################################################
#
#  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.56        wp5-6.wordpress.local
# 172.101.0.55        wp5-5.wordpress.local (Disbaled by default)
# 172.101.0.54        wp5-4.wordpress.local
# 172.101.0.53        wp5-3.wordpress.local (Disbaled by default)
# 172.101.0.52        wp5-2.wordpress.local (Disbaled by default)
# 172.101.0.51        wp5-1.wordpress.local (Disbaled by default)
# 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: wordpress_latest
        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=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 5.6
    wordpress-5.6:
        image: wordpress:5.6
        container_name: wordpress_5_6
        depends_on:
            - mysql
        volumes:
            - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
        environment:
            - WORDPRESS_VERSION=5.6
            - WORDPRESS_URL=wp5-6.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_5_6_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp56Key
            - 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-6.wordpress.local
        networks:
            wordpress:      { ipv4_address: 172.101.0.56 }
            splashsync:     { aliases: [ wp5-6.wordpress.local ] }

#    ################################################################################
#    # Wordpress 5.5
#    wordpress-5.5:
#        image: wordpress:5.5
#        container_name: wordpress_5_5
#        depends_on:
#            - mysql
#        volumes:
#            - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
#        environment:
#            - WORDPRESS_VERSION=5.5
#            - WORDPRESS_URL=wp5-5.wordpress.local
#            - WORDPRESS_DB_HOST=mysql
#            - WORDPRESS_DB_USER=root
#            - WORDPRESS_DB_PASSWORD=admin
#            - WORDPRESS_DB_NAME=wordpress
#            - WORDPRESS_TABLE_PREFIX=wp_5_5_
#            - ADMIN_MAIL=contact@splashsync.com
#            - ADMIN_PASSWD=splashsync
#            - SPLASH_WS_ID=ThisIsWp55Key
#            - 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-5.wordpress.local
#        networks:
#            wordpress:      { ipv4_address: 172.101.0.55 }
#            splashsync:     { aliases: [ wp5-5.wordpress.local ] }

    ################################################################################
    # Wordpress 5.4
    wordpress-5.4:
        image: wordpress:5.4
        container_name: wordpress_5_4
        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.4
            - WORDPRESS_URL=wp5-4.wordpress.local
            - WORDPRESS_DB_HOST=mysql
            - WORDPRESS_DB_USER=root
            - WORDPRESS_DB_PASSWORD=admin
            - WORDPRESS_DB_NAME=wordpress
            - WORDPRESS_TABLE_PREFIX=wp_5_4_
            - ADMIN_MAIL=contact@splashsync.com
            - ADMIN_PASSWD=splashsync
            - SPLASH_WS_ID=ThisIsWp54Key
            - 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-4.wordpress.local
        networks:
            wordpress:      { ipv4_address: 172.101.0.54 }
            splashsync:     { aliases: [ wp5-4.wordpress.local ] }

#    ################################################################################
#    # Wordpress 5.3
#    wordpress-5.3:
#        image: wordpress:5.3
#        container_name: wordpress_5_3
#        depends_on:
#            - mysql
#        volumes:
#         - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
#        environment:
#            - WORDPRESS_VERSION=5.3
#            - WORDPRESS_URL=wp5-3.wordpress.local
#            - WORDPRESS_DB_HOST=mysql
#            - WORDPRESS_DB_USER=root
#            - WORDPRESS_DB_PASSWORD=admin
#            - WORDPRESS_DB_NAME=wordpress
#            - WORDPRESS_TABLE_PREFIX=wp_5_3_
#            - ADMIN_MAIL=contact@splashsync.com
#            - ADMIN_PASSWD=splashsync
#            - SPLASH_WS_ID=ThisIsWp53Key
#            - 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-3.wordpress.local
#        networks:
#            wordpress:      { ipv4_address: 172.101.0.53 }
#            splashsync:     { aliases: [ wp5-3.wordpress.local ] }
                
#    ################################################################################
#    # Wordpress 5.2
#    wordpress-5.2:
#        image: wordpress:5.2
#        container_name: wordpress_5_2
#        depends_on:
#            - mysql
#        volumes:
#         - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
#        environment:
#            - WORDPRESS_VERSION=5.2
#            - WORDPRESS_URL=wp5-2.wordpress.local
#            - WORDPRESS_DB_HOST=mysql
#            - WORDPRESS_DB_USER=root
#            - WORDPRESS_DB_PASSWORD=admin
#            - WORDPRESS_DB_NAME=wordpress
#            - WORDPRESS_TABLE_PREFIX=wp_5_2_
#            - ADMIN_MAIL=contact@splashsync.com
#            - ADMIN_PASSWD=splashsync
#            - SPLASH_WS_ID=ThisIsWp52Key
#            - 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-2.wordpress.local
#        networks:
#            wordpress:      { ipv4_address: 172.101.0.52 }
#            splashsync:     { aliases: [ wp5-2.wordpress.local ] }
                
#    ################################################################################
#    # Wordpress 5.1
#    wordpress-5.1:
#        image: wordpress:5.1
#        container_name: wordpress_5_1
#        depends_on:
#            - mysql
#        volumes:
#         - "./:/var/www/html/wp-content/plugins/splash-connector:ro"
#        environment:
#            - WORDPRESS_VERSION=5.1
#            - WORDPRESS_URL=wp5-1.wordpress.local
#            - WORDPRESS_DB_HOST=mysql
#            - WORDPRESS_DB_USER=root
#            - WORDPRESS_DB_PASSWORD=admin
#            - WORDPRESS_DB_NAME=wordpress
#            - WORDPRESS_TABLE_PREFIX=wp_5_1_
#            - ADMIN_MAIL=contact@splashsync.com
#            - ADMIN_PASSWD=splashsync
#            - SPLASH_WS_ID=ThisIsWp51Key
#            - 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-1.wordpress.local
#        networks:
#            wordpress:      { ipv4_address: 172.101.0.51 }
#            splashsync:     { aliases: [ wp5-1.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