diff --git a/.gitignore b/.gitignore
index df1a13b2..b152f57d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-/logs
\ No newline at end of file
+/logs
+.env
\ No newline at end of file
diff --git a/README.md b/README.md
index a5934b2a..cc55b3f4 100644
--- a/README.md
+++ b/README.md
@@ -40,6 +40,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [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)
@@ -48,6 +49,7 @@ 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)
@@ -91,6 +93,7 @@ docker-compose up nginx mysql redis
- PostgreSQL
- MariaDB
- Neo4j
+- MongoDB
- Redis
- Memcached
- Beanstalkd
@@ -188,15 +191,14 @@ git clone https://github.com/LaraDock/laradock.git
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).
-[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
-
-2 - Run the Containers, (you can select the containers that you wish to run)
-
-*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
+2 - Run some Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).*
+
+
**Example:** Running NGINX and MySQL:
@@ -204,10 +206,14 @@ git clone https://github.com/LaraDock/laradock.git
docker-compose up -d nginx mysql
```
-*Note: the PHP-FPM, Workspace, Application and Data Containers will automatically run.*
+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.
-Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`, `data`, `php-fpm`, `application`.
@@ -215,7 +221,7 @@ Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`,
3 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, ...).
```bash
-docker exec -it {Workspace-Container-Name} bash
+docker-compose run workspace bash
```
Replace `{Workspace-Container-Name}` with your Workspace container name.
@@ -242,15 +248,11 @@ DB_HOST=xxx.xxx.xxx.xxx
5 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
-
-**Debugging**: in case you faced an error here, run this command from the Laravel root directory:
-
-```bash
-sudo chmod -R 777 storage bootstrap/cache
-```
-If you have any problem, or need a special support. Feel free to contact me, more details in the [Help & Questions](#Help) secion.
+**Debugging**: if you are facing any problem here check the [Debugging](#debugging) section.
+
+If you need a special support. Contact me, more details in the [Help & Questions](#Help) section.
@@ -321,7 +323,7 @@ docker-compose down
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`.
@@ -492,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
@@ -515,22 +511,16 @@ Composer update
```bash
phpunit
```
-```bash
-laravel new blog
-```
-
-
-
-
-
-
-
### 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.
@@ -558,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
@@ -574,6 +564,59 @@ composer require predis/predis:^1.0
+
+
+### 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`.
+
@@ -773,6 +816,24 @@ server_name laravel.dev;
```
+
+
+### 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.
+
@@ -786,30 +847,21 @@ server_name laravel.dev;
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 :)
-## Support
-
-To suggest a features or report a bug, open a new [Issue](https://github.com/laradock/laradock/issues).
-
-
## Help & Questions
-If you need help with anything related to this project, shedule a live call with me on [Codementor](https://www.codementor.io/mahmoudz), I'd love to help.
+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.
-If you have a short question, send me a direct message on LaraChat, my username is `mahmoud_zalt`. Or send me an email on `mahmoud@zalt.me`.
+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)
-
-Twitter: [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
-
-Website: [http://zalt.me](http://zalt.me)
-
-Email: `mahmoud@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
diff --git a/docker-compose.yml b/docker-compose.yml
index dd3ad77d..087cea3d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -27,12 +27,13 @@ services:
data:
build: ./data
volumes:
- - /var/lib/mysql
- - /var/lib/postgres
- - /var/lib/mariadb
- - /var/lib/redis
- - /var/lib/memcached
- - /var/lib/neo4j/data
+ - /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 ##################################
@@ -77,7 +78,7 @@ services:
### MariaDB Container #######################################
- mariadb:
+ mariadb:
build: ./mariadb
volumes_from:
- data
@@ -101,6 +102,15 @@ services:
volumes_from:
- data
+### MongoDB Container #######################################
+
+ mongo:
+ build: ./mongo
+ ports:
+ - "27017:27017"
+ volumes_from:
+ - data
+
### Redis Container #########################################
redis:
@@ -143,7 +153,10 @@ services:
### Workspace Utilities Container ###########################
workspace:
- build: ./workspace
+ build:
+ context: ./workspace
+ args:
+ INSTALL_PRESTISSIMO: ${INSTALL_PRESTISSIMO}
volumes_from:
- application
tty: true
diff --git a/mongo/Dockerfile b/mongo/Dockerfile
new file mode 100644
index 00000000..897e6f06
--- /dev/null
+++ b/mongo/Dockerfile
@@ -0,0 +1,12 @@
+FROM mongo:latest
+
+MAINTAINER Mahmoud Zalt
+
+#COPY mongo.conf /usr/local/etc/mongo/mongo.conf
+
+VOLUME /data/db /data/configdb
+
+CMD ["mongod"]
+
+EXPOSE 27017
+
diff --git a/php-fpm/Dockerfile-55 b/php-fpm/Dockerfile-55
index 93d82c52..ae4dbdb3 100644
--- a/php-fpm/Dockerfile-55
+++ b/php-fpm/Dockerfile-55
@@ -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
diff --git a/php-fpm/Dockerfile-56 b/php-fpm/Dockerfile-56
index 5da34488..f14a16f4 100644
--- a/php-fpm/Dockerfile-56
+++ b/php-fpm/Dockerfile-56
@@ -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
diff --git a/php-fpm/Dockerfile-70 b/php-fpm/Dockerfile-70
index 61f21d07..d046d278 100644
--- a/php-fpm/Dockerfile-70
+++ b/php-fpm/Dockerfile-70
@@ -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
diff --git a/php-fpm/laravel.ini b/php-fpm/laravel.ini
index 3580140c..b31c55b7 100644
--- a/php-fpm/laravel.ini
+++ b/php-fpm/laravel.ini
@@ -1,3 +1,4 @@
-date.timezone = UTC
-display_errors = Off
-log_errors = On
\ No newline at end of file
+date.timezone=UTC
+display_errors=Off
+log_errors=On
+extension=mongodb.so
diff --git a/redis/Dockerfile b/redis/Dockerfile
index 35e4e97b..e8fedab3 100644
--- a/redis/Dockerfile
+++ b/redis/Dockerfile
@@ -4,8 +4,8 @@ MAINTAINER Mahmoud Zalt
#COPY redis.conf /usr/local/etc/redis/redis.conf
-VOLUME /var/lib/redis
-
-CMD [ "redis-server" ]
+VOLUME /data
EXPOSE 6379
+
+CMD ["redis-server"]
diff --git a/workspace/Dockerfile b/workspace/Dockerfile
index 451cd76e..9e12b10b 100644
--- a/workspace/Dockerfile
+++ b/workspace/Dockerfile
@@ -20,7 +20,7 @@ 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 \
+RUN apt-get update && apt-get install -y --force-yes \
php7.0-cli \
php7.0-common \
php7.0-curl \
@@ -34,34 +34,52 @@ RUN apt-get update && apt-get install -y \
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
-# Install gulp and bower with NPM
-RUN npm install -g \
- gulp \
- bower
+# 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 a symbolic link for Node
-RUN ln -s /usr/bin/nodejs /usr/bin/node
-
-# Add an alias for PHPUnit
-RUN echo "alias phpunit='./vendor/bin/phpunit'" >> ~/.bashrc
+# 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
+
+# Load xdebug Zend extension with phpunit command
+RUN echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc
+
+# Install mongodb extension
+RUN pecl install mongodb
+RUN echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini
+
+# Install nvm (Node Version Manager)
+RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
+
+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
@@ -70,3 +88,9 @@ RUN . ~/.bashrc
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
\ No newline at end of file