Skip to content
DevPot - For a clean and fast development environment.
Shell Dockerfile PHP
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


For a clean and fast development environment

Build Status

Table of Contents


DevPot is a new version of Maxlab Stacker.



Get DevPot:

$ git clone
# OR
$ git clone

Run in DevPot directory

# make a symbolic link to your folder with all your projects 
$ ln -s /your_path/to_all_your_own_projects ./workspace
# copy .env.dist to .env and change it
$ cp .env.dist .env
# Add docker group
$ sudo groupadd docker
# Add your user to the docker group
$ sudo usermod -aG docker $USER
# Now restart? Or find an other way to complete the usermod changes
$ docker-compose build && docker-compose up -d && docker-compose ps
$ mv ./test ./workspace
# Then open http://php.test.localhost/ in your browser

Run Docker as non root

  • Create the docker group.
$ sudo groupadd docker
  • Add your user to the docker group.
$ sudo usermod -aG docker $USER
  • Log out and log back in so that your group membership is re-evaluated.

Move your projects

  • Add your project in workspace folder ./workspace/<customer>/<projectname> (no need to restart, this will work out of the box)
  • Open http://project.customer.localhost/ in your browser (if you do not have dnsmasq, you have to add your hosts file manually)

On the ship

  • mailcatcher -> schickling/mailcatcher:latest (all outgoing mail is sent to http://mail.localhost/)
  • nginx -> nginx:stable
  • mysql -> mysql:latest
  • php7xdebug -> php:7.3 + xdebug
  • dnsmasq -> dnsmasq:latest
  • php7console -> devpot console
  • redis -> redis:latest
  • phpmyadmin -> phpmyadmin:latest (http://phpmyadmin.localhost)


  • ZSH + oh-my-zsh
  • For backend: composer, php, phpunit, autocomplete
  • For automation deploy: dep (Deployer)

Create a Self-Signed Certificate

$ devpot create-certificate test # Replace test with your domain


Which settings in the configs for my projects?

  • Database
    • You can access the database in your app config use db for mysql and pgsql for postgresql (files will be saved in the mysql directory so it will be saved after destroying or recreating the containers)
      # Example for mysql
        database_host: mysql
        database_port: 3306
        database_name: sf
        database_user: root
        database_password: root
      # Example for redis
        database_host: redis
        database_port: 6379

What external ports are listening images?

  • It's easy. For convenience, the external ports of the databases are offset by plus one. For example, MySQL listens to port 3306 + 1 = 3307 and so on...
  • Check the file docker-compose.yml for more

Xdebug + PhpStorm configuration

  1. Go to Settings -> Languages & Frameworks -> PHP
  2. Click the ... behind your interperter

How to contact the any instances DevPot in console?

You can do so:

$ /your_path/to_devpot_folder/bin/devpot console

But, it will be much better:

# for bash
$ echo 'export PATH=/your_path/to_devpot_folder/bin:$PATH' >> ~/.bashrc && source ~/.bashrc 
# for ~/.zshrc
$ echo 'export PATH=/your_path/to_devpot_folder/bin:$PATH' >> ~/.zshrc && source ~/.zshrc
# then restart console and run
$ devpot console

Laravel5 completion

$ devpot console
$ cd to_laravel5_folder
$ la5 [tab*2]


$ devpot usage # for list available commands
$ devpot console # for enter to console
$ devpot logs <cont_name> -f # for logs stream container
$ devpot build && devpot down && devpot up && devpot ps # for full rebuild
You can’t perform that action at this time.