Giter Club home page Giter Club logo

docker-groupoffice-development's Introduction

Group-Office docker compose

This docker compose environment can be used for development. It will install these services:

  1. mariadb
  2. mailserver based on dovecot and postfix
  3. groupoffice apache web server with php 7.3, ioncube, composer and xdebug running on port 8080
  4. phpunit for testing
  5. sass container that will watch and compile sass files for you.

Installation

  1. Make sure docker and docker-compose are installed.

  2. Clone this repository:

    git clone --recurse-submodules https://github.com/Intermesh/groupoffice-docker-development.git
  3. Go into the source dfirectory and checkout the 'master' branch:

    cd groupoffice-docker-development/src/master
    git checkout master
    git pull
  4. Run the stack:

    docker-compose up -d

    Note: The first time you run it 'composer install' will run. This can take some time to complete. View the logs to see the progress.

  5. Install Group-Office by going to http://localhost:8080/install/. Note you should not see a page where you enter database connection details. If you see this something is wrong with the database container.

  6. Configure a cron job on the host machine so that Group Office can run scheduled tasks. On Linux create a file /etc/cron.d/groupoffice and add (replace "/PATH/TO/docker-groupoffice-development"):

    * * * * * root cd /PATH/TO/docker-groupoffice-development && docker-compose exec -T groupoffice php /usr/local/share/groupoffice/cron.php
    

    On MacOS I ran on the terminal:

    crontab -e

    And added:

    * * * * * cd /PATH/TO/docker-groupoffice-development && docker-compose exec -T groupoffice php /usr/local/share/groupoffice/cron.php
  7. All done. Happy coding!

Unit testing

WARNING: This will destroy and recreate database called "groupoffice_phpunit".

docker-compose exec groupoffice ./www/vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml tests

See below for debugging too.

Profiling

You can create a profile by setting setting XDEBUG_MODE: "profile" in the docker-compose.yml file. And create a bind mound: "./profile:/tmp/profile:delegated" to access the profile data.

Debugging

Xdebug is ready to run. You just need to setup path mappings. Map your local folder "$YOUR_INSTALL_PATH/docker-groupoffice-development/src/master" to "/usr/local/share/src" in the Docker container to tell your IDE that's where the source files are on the server.

XDebug doesn't auto start. I recommend using the XDebug browser extension to enable it for requests.1 On the command line you can set the environment variable::

docker-compose exec -e XDEBUG_SESSION=1 groupoffice ./www/cli.php

PHPStorm

For PHPStorm debugging on the command line make sure you set mappings for "localhost" at Settings -> Languages & Frameworks -> PHP -> Servers. Because we set the 'PHP_IDE_CONFIG' environment vairable to "localhost" in docker-compose.yml.

See also: https://www.jetbrains.com/help/phpstorm/zero-configuration-debugging-cli.html#6e577196

Open shell

If you'd like to open a shell inside the container then you can run:

docker-compose exec groupoffice bash

Useful commands

Run composer:

docker-compose exec -w /usr/local/share/src/www groupoffice composer update -o

Run legacy CLI commands:

docker-compose exec groupoffice php ./www/groupofficecli.php -r=postfixadmin/mailbox/cacheUsage -c=/etc/groupoffice/config.php -q

Run cron:

docker-compose exec --user www-data groupoffice php ./www/cron.php

Import language file:

docker-compose exec groupoffice php www/cli.php community/dev/Language/import --path=lang.csv

Upgrade:

docker-compose exec -u www-data groupoffice ./www/cli.php core/System/upgrade

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.