Introduction
Why stacker?
Stacker - This is a local environment for web development with everything you need. What is its benefit?
- You do not need to manually configure the web server and add to the hosts, just cloned it and immediately launched it in the browser. It looks so demo
- Inside, there is already everything that is needed in 90% of all cases. And if not, we will add it for you : )
- For you, there is a super zsh console with autocomplete and everything you need. Video with presentation
- There is an autocompletion for Symfony and Laravel commands out of the box. For example, la5 and a double tab, will output a list of commands for which you can "walk" with arrows to select them
- It is faster analogs, the same homestead is just a turtle compared to it
- There is a video course
- Friendly author, in case there are questions or suggestions
- Based on Docker. Wherever you can install Docker, you can install Stacker
- It is very simple to expand. The process of adding your own images with a couple of lines in docker-compose.yml
- Just try it!
General goals
- Frameworks a lot - he's one!
- Everything is easy, nothing to migrate
- Quickly start of developing locally
- No overhead on settings! Сopied project and run
- Zoo under a Docker, let the host mashine remains clean!
Video demos (RU)
Requirements
Installation
Get a stacker:
$ composer create-project maxlab/stacker
# OR
$ git clone [email protected]:Maxlab/stacker.git
Run in Stacker directory
# make ./workspace folder and make a symbolic link to your folder with all your projects
$ mkdir workspace && ln -s /your_path/to_all_your_own_projects ./workspace
# copy .env.dist to .env and change it
$ cp .env.dist .env
$ docker-compose build && docker-compose up -d && docker-compose ps
$ mv ./test ./workspace
Set local DNS server
- Linux
/etc/resolv.conf
- Mac
System Settings
- Windows
Network Adapter Setting
set your local dns server to 127.0.0.1
, to prevent dnsmasq from running, you need to set up the second DNS server. Such as 8.8.8.8 or something else.
For SSH
Copy your ssh keys in the folder workspace
$ cp -R ~/.ssh ~/www/docker/stacker/workspace
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://customer.project.dev/ 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.dev/)
- nginx -> nginx:1.10.1
- elasticsearch -> elasticsearch:5
- mysql -> mysql:5.7
- pgsql -> postgres:9.6
- php7xdebug -> php:7.1 + xdebug
- dnsmasq -> dnsmasq:latest
- php5apache -> php:5apache for legacy
- php7console -> stacker console
- redis -> redis:3.0
Console
-
ZSH + oh-my-zsh
- For frontend: nodejs, gem, npm, webpack, bower, gulp, uglify-js, uglifycss
- For backend: composer, php, phpunit, symfony, symfony-autocomplete, Yii2 autocomplete
- For automation deploy: dep (Deployer)
FAQ
Which settings in the configs for my projects?
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
- Go to Settings -> Languages & Frameworks -> PHP
- Click the ... behind your interperter
I have a lot of the Symfony project, is it possible to make a symbolic link to them?
- Yes! It's much faster and easier, plus no need to move folders from the usual places.
- In the directory with your projects, create a folder and copy all the projects from the Symfony code.
Now, make a link to your directory project in the directory with the Stacker,
remove a directory ./workspace
and rename your link to workspace - that's all!
Now all your Symfony projects is available from the browser.
How to contact the any instances Staker in console?
You can do so:
$ /your_path/to_stacker_folder/bin/stacker console
But, it will be much better:
# for bash
$ echo 'export PATH=/your_path/to_stacker_folder/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
# for ~/.zshrc
$ echo 'export PATH=/your_path/to_stacker_folder/bin:$PATH' >> ~/.zshrc && source ~/.zshrc
# then restart console and run
$ stacker console
Symfony completion
$ stacker console
$ cd to_symfony_folder
$ sf [tab*2] # for sf3 completion OR sf2 for sf2 completion
Laravel5 completion
$ stacker console
$ cd to_symfony_folder
$ la5 [tab*2]
Commands
$ stacker usage # for list available commands
$ stacker console # for enter to console
$ stacker logs <cont_name> -f # for logs stream container
$ stacker build && stacker down && stacker up && stacker ps # for full rebuild
Support project
You can support the project in several ways:
- Becoming a sponsor - If you are interested in becoming a sponsor, please visit the Stacker Patreon page
- Posting review - You can support the project by posting reviews in their social networks. Send a link to the review and we'll post it here!
- Buy a beer -