Compare commits

...

64 Commits

Author SHA1 Message Date
e5e04e4e18 update the readme: exec command to run 2016-06-23 08:58:43 +03:00
44d8720400 Merge pull request #115 from appleboy/patch-2
Change command about enter workspace container.
2016-06-23 08:52:37 +03:00
f0200626ba Merge pull request #114 from Kauhat/master
Added support to conditionally install Prestissimo
2016-06-23 08:36:48 +03:00
69406db3e0 Change command about enter workspace container. 2016-06-23 13:16:52 +08:00
bcb749151a Added support to conditionally install Prestissimo 2016-06-22 21:47:06 +01:00
ca413edff4 Merge pull request #112 from appleboy/patch-2
Fixed Change wrong project name.
2016-06-22 17:21:05 +03:00
f6d1d6f617 Fixed Change wrong project name. 2016-06-22 22:20:24 +08:00
117382a050 Merge branch 'pr/111'
(fix conflict)
* pr/111:
  add Node Version Manager (nvm)
2016-06-22 17:18:23 +03:00
2e930df2a7 Merge pull request #109 from appleboy/composer
Load xdebug Zend extension with phpunit command.
2016-06-22 16:57:08 +03:00
4922c5fafd add Node Version Manager (nvm)
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-06-22 09:33:17 +08:00
198c38f6cd Load xdebug Zend extension with phpunit command.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-06-21 14:03:39 +08:00
8d216f83d5 Merge pull request #101 from appleboy/gd
Support gd extension.
2016-06-16 17:47:04 +03:00
05c5fcf216 Support gd extension.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-06-16 14:57:27 +08:00
fccee522c6 update the readme 2016-06-11 20:49:04 +03:00
f3eb6a5fc4 Merge branch 'support-mongo'
* support-mongo:
  add Mongo Support to the Readme
  added php-mongodb extension
  simple reformatting
  set the original volume path
  get mongo volum from the data container
  added mongodb driver for php5.5 5.6
  added mongodb image + PHP7 driver

Fix Conflicts in:
	docker-compose.yml
	php-fpm/Dockerfile-55
	php-fpm/Dockerfile-56
	php-fpm/Dockerfile-70
	php-fpm/laravel.ini
2016-06-11 17:29:27 +03:00
685c34d12d add Mongo Support to the Readme 2016-06-11 17:10:18 +03:00
ceba1af3ae Merge pull request #94 from AminMkh/AminMkh-mongodb-extension
added php-mongodb extension
2016-06-11 15:47:16 +03:00
c4100b5052 added php-mongodb extension 2016-06-11 14:38:26 +03:00
1148a3d051 Merge pull request #91 from LaraDock/xdebug
Xdebug
2016-06-03 15:06:57 +03:00
bec1a32550 format the laravel.ini file 2016-06-03 15:01:56 +03:00
72cde8a8ea Merge branch 'patch-3' of https://github.com/appleboy/laradock into appleboy-patch-3
* 'patch-3' of https://github.com/appleboy/laradock:
  clean apt source file after install.
  install xdebug to generate coverage report for unit testing.
2016-06-03 14:39:53 +03:00
4f9cdb02c6 link global gulp to be used locally 2016-06-03 14:16:46 +03:00
1673a80daf clean apt source file after install.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-06-03 14:21:52 +08:00
f130381cfe install xdebug to generate coverage report for unit testing.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-06-03 14:04:33 +08:00
eda286ded2 Merge pull request #87 from LaraDock/appleboy-patch-1
Appleboy patch 1 (fixing volumes mounting)
2016-06-03 01:52:24 +03:00
a8b4b61e28 update the volumes mounting of the DB containers 2016-06-03 01:50:11 +03:00
124a3553e6 simple reformatting 2016-06-01 14:45:27 +03:00
3ff4aaca79 set the original volume path 2016-06-01 14:44:40 +03:00
4c06a03ead get mongo volum from the data container 2016-06-01 14:44:10 +03:00
1cb131ba36 Merge branch 'master' of https://github.com/AminMkh/laradock into AminMkh-master
* 'master' of https://github.com/AminMkh/laradock:
  added mongodb driver for php5.5 5.6
  added mongodb image + PHP7 driver
2016-06-01 12:59:17 +03:00
99b54c5f7d remove unnecessary data volume of redis.
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-06-01 13:44:41 +08:00
8993cccc2c basic updates to the reamdme 2016-05-31 19:15:29 +03:00
1090bb4db6 added mongodb driver for php5.5 5.6 2016-05-30 23:26:40 +03:00
9c7054abe2 added mongodb image + PHP7 driver 2016-05-29 14:19:43 +03:00
e7decdaaf7 add debugging section to the readme 2016-05-28 11:04:05 +03:00
18bf12bfde Merge pull request #74 from abyshakes/master
Issue #73 unable to install workspace container
2016-05-26 21:17:51 +03:00
d829482a06 Issue #73 unable to install workspace container 2016-05-25 22:33:29 +05:30
86c6389650 Merge pull request #70 from Gummibeer/patch-2
Issue #69
2016-05-24 19:49:35 +03:00
991e28046d Issue #69
add memcached to php-cli
2016-05-24 16:44:52 +02:00
ccbc73c6bc update the readme file 2016-05-24 14:01:07 +03:00
246c7366ba Merge pull request #68 from Gummibeer/patch-1
Issue #67
2016-05-24 13:23:13 +03:00
762e2ec07b Issue #67
Issue #67
simpler docker IP-Address get command
2016-05-24 11:54:07 +02:00
adaaa25f47 remove the Laravel installer from the workspace container 2016-05-23 23:32:59 +03:00
11a13a0c33 Merge pull request #66 from AminMkh/workspace-postgres-driver
added postgres driver
2016-05-23 23:24:27 +03:00
c642560993 added postgres driver
added postgres driver to workspace container.
2016-05-23 23:20:07 +03:00
ea9f5c635f Merge pull request #64 from AminMkh/master
Update docker-compose.yml
2016-05-23 23:00:09 +03:00
fd4253afb6 Update docker-compose.yml 2016-05-23 22:23:10 +03:00
73310e45e8 Merge pull request #62 from AminMkh/master
Update README.MD
2016-05-23 21:53:55 +03:00
7f91fc9798 Update README.MD 2016-05-23 21:45:38 +03:00
a8a7685a40 basic changes to the readme format 2016-05-21 19:19:03 +03:00
06c4c19a6f replace official neo4j image with tpires/neo4j
because of this wired error
(https://github.com/neo4j/docker-neo4j/issues/33)
2016-05-20 21:21:19 +03:00
8bff7656f6 add neo4j support to the readme file 2016-05-20 20:37:00 +03:00
5c9eb97db5 Support Neo4j DB (beta) 2016-05-20 20:35:10 +03:00
588819ab6d turn errors and access logs on by default for nginx 2016-05-20 20:32:33 +03:00
170b63a3ba edit redis volume 2016-05-20 09:26:29 +03:00
19813e48c3 add demo video to the readme 2016-05-20 09:24:26 +03:00
be7b8ee056 update the readme (installation steps) 2016-05-19 21:40:25 +03:00
01a056dd25 make the workspace container run automatically 2016-05-19 20:49:16 +03:00
70e1b0fe41 update readme file 2016-05-19 18:04:53 +03:00
0959b25c05 add sqlite support to the readme 2016-05-19 03:42:36 +03:00
1d8336a9e1 add cleaning to free some space during provisioning the workspace
Fixing E: You don't have enough free space in /var/cache/apt/archives/
2016-05-19 03:25:02 +03:00
f0e2d83618 add sqlite in the workspace
it could be removed to it’s own container later
2016-05-19 03:06:34 +03:00
7f1deb0342 update how to get IP address on Linux, in the readme 2016-05-19 02:49:07 +03:00
703887a2a6 add Node, Gulp and Bower to the readme 2016-05-18 22:54:46 +03:00
12 changed files with 414 additions and 193 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
/logs
/logs
.env

373
README.md
View File

@ -21,6 +21,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [What is Laravel](#what-is-laravel)
- [Why Docker not Vagrant](#why-docker-not-vagrant)
- [LaraDock VS Homestead](#laradock-vs-homestead)
- [Demo Video](#Demo)
- [Requirements](#Requirements)
- [Installation](#Installation)
- [Usage](#Usage)
@ -36,8 +37,10 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [Add more Software's (Docker Images)](#Add-Docker-Images)
- [View the Log files](#View-the-Log-files)
- [Laravel](#Laravel):
- [Install Laravel from a Docker Container](#Install-Laravel)
- [Run Artisan Commands](#Run-Artisan-Commands)
- [Use Redis](#Use-Redis)
- [Use Mongo](#Use-Mongo)
- [PHP](#PHP)
- [Install PHP Extensions](#Install-PHP-Extensions)
- [Change the PHP-FPM Version](#Change-the-PHP-FPM-Version)
@ -46,7 +49,8 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
- [Find your Docker IP Address](#Find-Docker-IP-Address)
- [Use custom Domain](#Use-custom-Domain)
- [Debugging](#debugging)
- [Help & Questions](#Help)
@ -57,10 +61,10 @@ LaraDock strives to make the development experience easier.
It contains pre-packaged Docker Images that provides you a wonderful development environment without requiring you to install PHP, NGINX, MySQL, REDIS, and any other software on your local machine.
**Usage Overview:** Run `NGINX` and `MySQL`.
**Usage Overview:** Run `NGINX`, `MySQL` and `Redis`.
```shell
docker-compose up nginx mysql
docker-compose up nginx mysql redis
```
<a name="features"></a>
@ -88,12 +92,14 @@ docker-compose up nginx mysql
- MySQL
- PostgreSQL
- MariaDB
- Neo4j
- MongoDB
- Redis
- Memcached
- Beanstalkd
- Beanstalkd Console
- Workspace (includes: Composer, PHP7-CLI, Laravel Installer, Git, Vim, Nano and cURL)
- Data Volume *(Databases Data Container)*
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano and cURL)
- Data *(Databases Data Container)*
- Application *(Application Code Container)*
@ -151,117 +157,102 @@ Running a virtual Container is much faster than running a full virtual Machine.
| [Docker Compose](https://docs.docker.com/compose/install) | |
<a name="Demo"></a>
## Demo Video
What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwDA) :)
<a name="Installation"></a>
## Installation
#### A - In existing Laravel Projects:
1 - Clone the `LaraDock` repository, inside your `Laravel` project root direcotry:
1 - Clone the `LaraDock` repository.
**A)** If you already have a Laravel project, clone this repository on your `Laravel` root direcotry:
```bash
git submodule add https://github.com/LaraDock/laradock.git
```
>If you are not already using Git for your Laravel project, you can use `git clone` instead of `git submodule`.
2 - That's it, jump to the Usage section now.
*If you are not already using Git for your Laravel project, you can use `git clone` instead of `git submodule`.*
<br>
#### B - From scratch (Install LaraDock and Laravel):
*If you don't have any Laravel project yet, and you want to start your Laravel project with Docker.*
1 - Clone the `LaraDock` repository anywhere on your machine:
**B)** If you don't have a Laravel project, and you want to install Laravel from Docker, clone this repo anywhere on your machine:
```bash
git clone https://github.com/LaraDock/laradock.git
```
2 - Go to the Uage section below and do the steps 1 and 3 then come back here.
3 - Enter the Workspace container. (assuming you have the Workspace container running):
```bash
docker exec -it {Workspace-Container-Name} bash
```
Replace `{Workspace-Container-Name}` with your Workspace container name. To get the name type `docker-compose ps` and copy it.
4 - Install Laravel anyway you like.
Example using the Laravel Installer:
```bash
laravel new my-cool-app
```
For more about this check out this [link](https://laravel.com/docs/master#installing-laravel).
5 - Edit `docker-compose.yml` to Map the new application path:
By default LaraDock assumes the Laravel application is living in the parent directory of the laradock folder.
Since the new Laravel application is in the `my-cool-app` folder, we should replace `../:/var/www/laravel` with `../my-cool-app/:/var/www/laravel`, as follow:
```yaml
application:
build: ./application
volumes:
- ../my-cool-app/:/var/www/laravel
```
6 - finally go to the Usage section below again and do steps 2 and 4.
<a name="Usage"></a>
## Usage
1 - For **Windows & MAC** users only: make sure you have a running Docker Virtual Host on your machine.
(**Linux** users don't need a Virtual Host, so skip this step).
<br>
1 - For **Windows & MAC** users only: If you are not using the native Docker-Engine `Beta`, make sure you have a running Docker Virtual Host on your machine.
[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
(**Linux** users don't need a Virtual Host, so skip this step).
<br>
2 - Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
2 - Run some Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).*
**Example:** Running NGINX and MySQL:
```bash
docker-compose up -d nginx mysql
```
You can select your own combination of container form this list:
`nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`, `data`, `php-fpm`, `application`.
**Note**: `workspace`, `data`, `php-fpm` and `application` will run automatically in most of the cases.
<br>
3 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, ...).
```bash
docker-compose run workspace bash
```
Replace `{Workspace-Container-Name}` with your Workspace container name.
<br>
To find the containers names type `docker-compose ps`.
<br>
4 - Edit the Laravel configurations.
If you don't have a Laravel project installed yet, see [How to Install Laravel in a Docker Container](#Install-Laravel).
Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
```env
DB_HOST=xxx.xxx.xxx.xxx
```
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
<br>
3 - Run the Containers, (you can select the software's (containers) that you wish to run)
<br>
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
**Example:** Running NGINX, MySQL, Redis and the Workspace:
```bash
docker-compose up -d nginx mysql redis workspace
```
*Note: the PHP-FPM, Application and Data Containers will automatically run.*
Supported Containers: `workspace`, `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `memcached`, `beanstalkd`, `beanstalkd-console`, `data`, `php-fpm`, `application`.
<br>
4 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
<br>
**Debugging**: in case you faced an error here, run this command from the Laravel root directory:
5 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
```bash
sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache
```
<br>
**Debugging**: if you are facing any problem here check the [Debugging](#debugging) section.
[Follow @Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
If you need a special support. Contact me, more details in the [Help & Questions](#Help) section.
<br>
@ -271,12 +262,12 @@ sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache
<a name="Docker"></a>
### Docker
### [Docker]
<a name="List-current-running-Containers"></a>
#### List current running Containers
### List current running Containers
```bash
docker ps
```
@ -292,7 +283,7 @@ docker-compose ps
<br>
<a name="Close-all-running-Containers"></a>
#### Close all running Containers
### Close all running Containers
```bash
docker-compose stop
```
@ -310,7 +301,7 @@ docker-compose stop {container-name}
<br>
<a name="Delete-all-existing-Containers"></a>
#### Delete all existing Containers
### Delete all existing Containers
```bash
docker-compose down
```
@ -325,14 +316,14 @@ docker-compose down
<br>
<a name="Enter-Container"></a>
#### Enter a Container (SSH into a running Container)
### Enter a Container (SSH into a running Container)
1 - first list the current running containers with `docker ps`
2 - enter any container using:
```bash
docker exec -it {container-name} bash
docker-compose run {container-name} bash
```
3 - to exit a container, type `exit`.
@ -344,7 +335,7 @@ docker exec -it {container-name} bash
<br>
<a name="Edit-Container"></a>
#### Edit default container configuration
### Edit default container configuration
Open the `docker-compose.yml` and change anything you want.
Examples:
@ -372,7 +363,7 @@ Change Redis defaut port to 1111:
<br>
<a name="Edit-a-Docker-Image"></a>
#### Edit a Docker Image
### Edit a Docker Image
1 - Find the `dockerfile` of the image you want to edit,
<br>
@ -399,7 +390,7 @@ docker-compose build mysql
<br>
<a name="Build-Re-build-Containers"></a>
#### Build/Re-build Containers
### Build/Re-build Containers
If you do any change to any `dockerfile` make sure you run this command, for the changes to take effect:
@ -419,7 +410,7 @@ docker-compose build {container-name}
<br>
<a name="Add-Docker-Images"></a>
#### Add more Software's (Docker Images)
### Add more Software's (Docker Images)
To add an image (software), just edit the `docker-compose.yml` and add your container details, to do so you need to be familiar with the [docker compose file syntax](https://docs.docker.com/compose/compose-file/).
@ -433,7 +424,7 @@ To add an image (software), just edit the `docker-compose.yml` and add your cont
<br>
<a name="View-the-Log-files"></a>
#### View the Log files
### View the Log files
The Nginx Log file is stored in the `logs/nginx` directory.
However to view the logs of all the other containers (MySQL, PHP-FPM,...) you can run this:
@ -448,13 +439,52 @@ docker logs {container-name}
<br>
<a name="Laravel"></a>
### Laravel
### [Laravel]
<a name="Install-Laravel"></a>
### Install Laravel from a Docker Container
1 - First you need to enter the Workspace Container.
2 - Install Laravel.
Example using Composer
```bash
composer create-project laravel/laravel my-cool-app "5.2.*"
```
> We recommand using `composer create-project` instead of the Laravel installer, to install Laravel.
For more about the Laravel installation click [here](https://laravel.com/docs/master#installing-laravel).
3 - Edit `docker-compose.yml` to Map the new application path:
By default LaraDock assumes the Laravel application is living in the parent directory of the laradock folder.
Since the new Laravel application is in the `my-cool-app` folder, we need to replace `../:/var/www/laravel` with `../my-cool-app/:/var/www/laravel`, as follow:
```yaml
application:
build: ./application
volumes:
- ../my-cool-app/:/var/www/laravel
```
4 - Go to that folder and start working..
```bash
cd my-cool-app
```
<br>
<a name="Run-Artisan-Commands"></a>
#### Run Artisan Commands
### Run Artisan Commands
You can run artisan commands and many other Terminal commands from the Workspace container.
@ -464,19 +494,13 @@ You can run artisan commands and many other Terminal commands from the Workspace
docker-compose up -d workspace // ..and all your other containers
```
2 - Find the Workspace container name:
2 - Enter the Workspace container:
```bash
docker-compose ps
docker-compose run workspace /bin/bash
```
3 - Enter the Workspace container:
```bash
docker exec -it {workspace-container-name} bash
```
4 - Run anything you want :)
3 - Run anything you want :)
```bash
php artisan
@ -487,22 +511,16 @@ Composer update
```bash
phpunit
```
```bash
laravel new blog
```
<br>
<a name="Use-Redis"></a>
#### Use Redis
### Use Redis
1 - First make sure you run the Redis Container with the `docker-compose` command.
1 - First make sure you run the Redis Container (`redis`) with the `docker-compose up` command.
```bash
docker-compose up -d redis
```
2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to your `Docker-IP` instead of the default `127.0.0.1` IP.
@ -530,7 +548,7 @@ CACHE_DRIVER=redis
SESSION_DRIVER=redis
```
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer first.
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer:
```bash
composer require predis/predis:^1.0
@ -546,6 +564,59 @@ composer require predis/predis:^1.0
<br>
<a name="Use-Mongo"></a>
### Use Mongo
1 - First make sure you run the MongoDB Container (`mongo`) with the `docker-compose up` command.
```bash
docker-compose up -d mongo
```
2 - Add the MongoDB configurations to the `config/database.php` config file:
```php
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST', 'localhost'),
'port' => env('DB_PORT', 27017),
'database' => env('DB_DATABASE', 'database'),
'username' => '',
'password' => '',
'options' => [
'database' => '',
]
],
// ...
],
```
3 - Open your Laravel's `.env` file and update the following variables:
- set the `DB_HOST` to your `Docker-IP`.
- set the `DB_PORT` to `27017`.
- set the `DB_DATABASE` to `database`.
4 - Finally make sure you have the `jenssegers/mongodb` package installed via Composer and its Service Provider is added.
```bash
composer require jenssegers/mongodb
```
More details about this [here](https://github.com/jenssegers/laravel-mongodb#installation).
5 - Test it:
- First let your Models extend from the Mongo Eloquent Model. Check the [documentation](https://github.com/jenssegers/laravel-mongodb#eloquent).
- Enter the Workspace Continer `docker-compose run workspace bash`.
- Migrate the Database `php artisan migrate`.
@ -553,7 +624,7 @@ composer require predis/predis:^1.0
<br>
<a name="PHP"></a>
### PHP
### [PHP]
@ -561,7 +632,7 @@ composer require predis/predis:^1.0
<a name="Install-PHP-Extensions"></a>
#### Install PHP Extensions
### Install PHP Extensions
Before installing PHP extensions, you have to decide whether you need for the `FPM` or `CLI` because each lives on a different container, if you need it for both you have to edit both containers.
@ -579,7 +650,7 @@ The PHP-CLI extensions should be installed in `workspace/Dockerfile`.
<br>
<a name="Change-the-PHP-FPM-Version"></a>
#### Change the PHP-FPM Version
### Change the PHP-FPM Version
By default **PHP-FPM 7.0** is running.
>The PHP-FPM is responsible of serving your application code, you don't have to change the PHP-CLI version if you are planing to run your application on different PHP-FPM version.
@ -626,7 +697,7 @@ For more details about the PHP base image, visit the [official PHP docker images
<br>
<a name="Change-the-PHP-CLI-Version"></a>
#### Change the PHP-CLI Version
### Change the PHP-CLI Version
By default **PHP-CLI 7.0** is running.
>Note: it's not very essential to edit the PHP-CLI verion. The PHP-CLI is only used for the Artisan Commands & Composer. It doesn't serve your Application code, this is the PHP-FPM job.
@ -647,14 +718,14 @@ Right now you have to manually edit the `Dockerfile` or create a new one like it
<br>
<a name="Misc"></a>
### Misc
### [Misc]
<a name="Run-Docker-Virtual-Host"></a>
#### Run a Docker Virtual Host
### Run a Docker Virtual Host
These steps are only for **Windows & MAC** users *(Linux users don't need a virtual host)*:
@ -684,30 +755,39 @@ eval $(docker-machine env)
<br>
<a name="Find-Docker-IP-Address"></a>
#### Find your Docker IP Address
### Find your Docker IP Address
**On Windows & MAC:**
Run this command in your terminal:
```bash
docker-machine ip default
```
If your Host name is different then `default`, you have to specify it (`docker-machine ip my-host`).
*(The default IP is 192.168.99.100)*
**On Linux:**
Your IP Address is `127.0.0.1`
<br>
> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*.
<br>
**On Linux:**
Run this command in your terminal:
```shell
ifconfig docker0 | grep 'inet' | cut -d: -f2 | awk '{ print $1}' | head -n1
```
*(The default IP is 172.17.0.1)*
<br>
<a name="Use-custom-Domain"></a>
#### Use custom Domain (instead of the Docker IP)
### Use custom Domain (instead of the Docker IP)
Assuming your custom domain is `laravel.dev` and your current `Docker-IP` is `xxx.xxx.xxx.xxx`.
@ -736,6 +816,24 @@ server_name laravel.dev;
```
<br>
<a name="debugging"></a>
### Debugging
*Here's a list of the common problems you might face, and the possible solutions.*
#### + I see a blank (white) page instead of the Laravel 'Welcome' page!
run this command from the Laravel root directory:
```bash
sudo chmod -R 777 storage bootstrap/cache
```
#### + I see "Welcome to nginx" instead of the Laravel App!
use `http://127.0.0.1` instead of `http://localhost` in your browser.
@ -747,27 +845,24 @@ server_name laravel.dev;
<br>
## Contributing
This little project was built by one man who has a full time job and many responsibilities, so if you like this project and you find that it needs a bug fix or support for new software or upgrade for the current containers, or anything else.. Do not hesitate to contribute, you are more than welcome :)
All Docker Images can be found at [https://github.com/LaraDock](https://github.com/LaraDock)
## Support
[Issues](https://github.com/laradock/laradock/issues) on Github.
This little project was built by one man who has a full time job and many responsibilities, so if you like this project and you find that it needs a bug fix or support for new software or upgrade any container, or anything else.. Do not hesitate to contribute, you are more than welcome :)
<a name="Help"></a>
## Help & Questions
### Questions?
If you have any question, send me a direct message on LaraChat, my username is `mahmoud_zalt`.
If you need any help with Docker and Laravel, you can schedule a live call with the creator of this project at [Codementor.io](https://www.codementor.io/mahmoudz), He would love to help.
For general questions you can open [Issues](https://github.com/laradock/laradock/issues) here on Github (We will label them as questions).
Additionally, you can contact Mahmoud Zalt (the creator of this project) via a direct message on LaraChat, (his username is `mahmoud_zalt`). Or send him an email (`mahmoud@zalt.me`).
## Credits
[![Mahmoud Zalt](https://img.shields.io/badge/Author-Mahmoud%20Zalt-orange.svg)](http://www.zalt.me)
- [Mahmoud Zalt](https://github.com/Mahmoudz) (Twitter [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt))
- [Awesome list of contributors](https://github.com/LaraDock/laradock/graphs/contributors)
## License
[MIT License (MIT)](https://github.com/laradock/laradock/blob/master/LICENSE)
[]([]())
[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE) (MIT)

View File

@ -12,6 +12,8 @@ services:
- application
expose:
- "9000"
links:
- workspace
### Laravel Application Code Container ######################
@ -25,11 +27,13 @@ services:
data:
build: ./data
volumes:
- /var/lib/mysql
- /var/lib/postgres
- /var/lib/mariadb
- /var/lib/redis
- /var/lib/memcached
- /var/lib/mysql:/var/lib/mysql
- /var/lib/postgres:/var/lib/postgres
- /var/lib/mariadb:/var/lib/mariadb
- /var/lib/memcached:/var/lib/memcached
- /var/lib/redis:/data
- /var/lib/neo4j:/var/lib/neo4j/data
- /var/lib/mongo:/data/db
### Nginx Server Container ##################################
@ -58,8 +62,6 @@ services:
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root
links:
- php-fpm
### PostgreSQL Container ####################################
@ -73,12 +75,10 @@ services:
POSTGRES_DB: homestead
POSTGRES_USER: homestead
POSTGRES_PASSWORD: secret
links:
- php-fpm
### MariaDB Container #######################################
mariadb:
mariadb:
build: ./mariadb
volumes_from:
- data
@ -89,8 +89,27 @@ services:
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root
links:
- php-fpm
### Neo4j Container #########################################
neo4j:
build: ./neo4j
ports:
- "7474:7474"
- "1337:1337"
environment:
- NEO4J_AUTH=homestead:secret
volumes_from:
- data
### MongoDB Container #######################################
mongo:
build: ./mongo
ports:
- "27017:27017"
volumes_from:
- data
### Redis Container #########################################
@ -100,8 +119,6 @@ services:
- data
ports:
- "6379:6379"
links:
- php-fpm
### Memcached Container #####################################
@ -136,7 +153,10 @@ services:
### Workspace Utilities Container ###########################
workspace:
build: ./workspace
build:
context: ./workspace
args:
INSTALL_PRESTISSIMO: ${INSTALL_PRESTISSIMO}
volumes_from:
- application
tty: true

12
mongo/Dockerfile Normal file
View File

@ -0,0 +1,12 @@
FROM mongo:latest
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
#COPY mongo.conf /usr/local/etc/mongo/mongo.conf
VOLUME /data/db /data/configdb
CMD ["mongod"]
EXPOSE 27017

7
neo4j/Dockerfile Normal file
View File

@ -0,0 +1,7 @@
FROM tpires/neo4j
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
VOLUME /var/lib/neo4j/data
EXPOSE 7474 1337

View File

@ -17,8 +17,8 @@ http {
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
access_log on;
error_log on;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;

View File

@ -8,17 +8,34 @@ ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
RUN apt-get update && apt-get install -y \
libpq-dev \
libmemcached-dev \
curl
curl \
libpng12-dev \
libfreetype6-dev \
--no-install-recommends \
&& rm -r /var/lib/apt/lists/*
# configure gd library
RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/include/freetype2
# Install extensions using the helper script provided by the base image
RUN docker-php-ext-install \
pdo_mysql \
pdo_pgsql
pdo_pgsql \
gd
#Install memcached
# Install memcached
RUN pecl install memcached \
&& docker-php-ext-enable memcached
# Install xdebug
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
# Install mongodb driver
RUN pecl install mongodb
RUN usermod -u 1000 www-data
WORKDIR /var/www/laravel

View File

@ -8,17 +8,34 @@ ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
RUN apt-get update && apt-get install -y \
libpq-dev \
libmemcached-dev \
curl
curl \
libpng12-dev \
libfreetype6-dev \
--no-install-recommends \
&& rm -r /var/lib/apt/lists/*
# configure gd library
RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/include/freetype2
# Install extensions using the helper script provided by the base image
RUN docker-php-ext-install \
pdo_mysql \
pdo_pgsql
pdo_pgsql \
gd
#Install memcached
# Install memcached
RUN pecl install memcached \
&& docker-php-ext-enable memcached
# Install xdebug
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
# Install mongodb driver
RUN pecl install mongodb
RUN usermod -u 1000 www-data
WORKDIR /var/www/laravel

View File

@ -8,12 +8,22 @@ ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
RUN apt-get update && apt-get install -y \
libpq-dev \
libmemcached-dev \
curl
curl \
libpng12-dev \
libfreetype6-dev \
--no-install-recommends \
&& rm -r /var/lib/apt/lists/*
# configure gd library
RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \
--with-freetype-dir=/usr/include/freetype2
# Install extensions using the helper script provided by the base image
RUN docker-php-ext-install \
pdo_mysql \
pdo_pgsql
pdo_pgsql \
gd
# Install Memcached for php 7
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
@ -23,6 +33,13 @@ RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-m
&& docker-php-ext-install memcached \
&& rm /tmp/memcached.tar.gz
# Install xdebug
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
# Install mongodb driver
RUN pecl install mongodb
RUN usermod -u 1000 www-data
WORKDIR /var/www/laravel

View File

@ -1,3 +1,4 @@
date.timezone = UTC
display_errors = Off
log_errors = On
date.timezone=UTC
display_errors=Off
log_errors=On
extension=mongodb.so

View File

@ -4,6 +4,8 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
#COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server" ]
VOLUME /data
EXPOSE 6379
CMD ["redis-server"]

View File

@ -11,14 +11,16 @@ ENV LC_CTYPE=UTF-8
ENV LANG=en_US.UTF-8
ENV TERM xterm
# Install "software-properties-common" (for add-apt-repository) and add the "PHP 7" ppa
RUN apt-get update \
&& apt-get install -y software-properties-common \
&& add-apt-repository -y ppa:ondrej/php
# Install "software-properties-common" (for the "add-apt-repository")
RUN apt-get update && apt-get install -y \
software-properties-common
# Install PHP-CLI 7 and some useful Tools
RUN apt-get update \
&& apt-get install -y \
# Add the "PHP 7" ppa
RUN add-apt-repository -y \
ppa:ondrej/php
# Install PHP-CLI 7, some PHP extentions and some useful Tools with APT
RUN apt-get update && apt-get install -y --force-yes \
php7.0-cli \
php7.0-common \
php7.0-curl \
@ -27,38 +29,68 @@ RUN apt-get update \
php7.0-mbstring \
php7.0-mcrypt \
php7.0-mysql \
php7.0-pgsql \
php7.0-sqlite \
php7.0-sqlite3 \
php7.0-zip \
php7.0-memcached \
php7.0-gd \
php7.0-xdebug \
php-dev \
libcurl4-openssl-dev \
libedit-dev \
libssl-dev \
libxml2-dev \
xz-utils \
sqlite3 \
libsqlite3-dev \
git \
curl \
vim \
nano \
nodejs \
nodejs-dev \
npm
nano
# Clean up, to free some space
RUN apt-get clean
# remove load xdebug extension (only load on phpunit command)
RUN sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini
# Add bin folder of composer to PATH.
RUN echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc
# Install Composer
RUN curl -s http://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/ \
&& echo "alias composer='/usr/local/bin/composer.phar'" >> ~/.bashrc
&& mv composer.phar /usr/local/bin/composer
# Install the Laravel Installer
RUN composer.phar global require "laravel/installer" \
&& echo "export PATH='~/.composer/vendor/bin:$PATH'" >> ~/.bashrc
# Load xdebug Zend extension with phpunit command
RUN echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc
# Install gulp and bower
RUN npm install -g gulp bower
# Install mongodb extension
RUN pecl install mongodb
RUN echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini
# Add a symbolic link
RUN ln -s /usr/bin/nodejs /usr/bin/node
# Install nvm (Node Version Manager)
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
# Add an alias for PHPUnit
RUN echo "alias phpunit='./vendor/bin/phpunit'" >> ~/.bashrc
ENV NVM_DIR=/root/.nvm
# Install stable node
RUN . ~/.nvm/nvm.sh \
&& nvm install stable \
&& nvm use stable \
&& nvm alias stable \
&& npm install -g gulp bower
# Source the bash
RUN . ~/.bashrc
# Clean up
RUN apt-get autoclean && apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
WORKDIR /var/www/laravel
# Install optional software
ARG INSTALL_PRESTISSIMO=false
RUN if [ "$INSTALL_PRESTISSIMO" = true ] ; then \
composer global require "hirak/prestissimo:^0.3"; \
fi