Compare commits
66 Commits
Author | SHA1 | Date | |
---|---|---|---|
c60cb9ab40 | |||
d58ef06907 | |||
462b5685eb | |||
11f7cfe729 | |||
d5ffc04034 | |||
062b7466f6 | |||
e1dbb972f1 | |||
419434020c | |||
2a02ed73e3 | |||
ca378ac734 | |||
67f92de4f0 | |||
c8d4461771 | |||
23b0906cd7 | |||
28a2d8e072 | |||
f97f0b0d11 | |||
05e1dd4c13 | |||
fc78ab7764 | |||
ef8579987f | |||
4dda3b969e | |||
4d2452101a | |||
233cfb5b07 | |||
63b9ec2bd8 | |||
d5a51d4de9 | |||
c7fae1a807 | |||
d6329c26b3 | |||
a96ee88692 | |||
2799a94a9f | |||
5bcbe0d291 | |||
9e7a669d5b | |||
9b084433c3 | |||
fc303dee08 | |||
d75a43c615 | |||
06337e6024 | |||
16b82d066e | |||
074deec781 | |||
2d382b683a | |||
68576f9022 | |||
2df00ecdad | |||
aeb5a6bb63 | |||
2bbf59ddda | |||
dca0545293 | |||
5f99478c76 | |||
48a53f1d24 | |||
11cdfd440b | |||
14cbe9f935 | |||
42d63236f1 | |||
d01d087431 | |||
11c65c4a00 | |||
1b9630e8a1 | |||
3a714339da | |||
65078505c1 | |||
e0b4734dab | |||
243392444f | |||
72a8fc049d | |||
de6db93da8 | |||
1af9dc5ac2 | |||
62878e7c49 | |||
3cd1f070e1 | |||
fb5ea7f42c | |||
aa8be6f95b | |||
aa0a726945 | |||
e5e04e4e18 | |||
44d8720400 | |||
f0200626ba | |||
69406db3e0 | |||
bcb749151a |
12
.editorconfig
Normal file
12
.editorconfig
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
|
||||||
|
[{Dockerfile,docker-compose.yml}]
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 4
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1,3 @@
|
|||||||
/logs
|
/logs
|
||||||
|
/data
|
||||||
|
.env
|
285
README.md
285
README.md
@ -2,13 +2,16 @@
|
|||||||
|
|
||||||
[](http://zalt.me)
|
[](http://zalt.me)
|
||||||
|
|
||||||
|
[](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
||||||
|
|
||||||
LaraDock helps you run your **Laravel** App on **Docker** real quick.
|
LaraDock helps you run your **Laravel** App on **Docker** real quick.
|
||||||
<br>
|
<br>
|
||||||
It's like Laravel Homestead but for Docker instead of Vagrant.
|
It's like Laravel Homestead but for Docker instead of Vagrant.
|
||||||
|
|
||||||
|
>With LaraDock, use Docker first and learn about it later.
|
||||||
|
|
||||||

|
|
||||||
|

|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
## Contents
|
## Contents
|
||||||
@ -45,10 +48,14 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
|||||||
- [Install PHP Extensions](#Install-PHP-Extensions)
|
- [Install PHP Extensions](#Install-PHP-Extensions)
|
||||||
- [Change the PHP-FPM Version](#Change-the-PHP-FPM-Version)
|
- [Change the PHP-FPM Version](#Change-the-PHP-FPM-Version)
|
||||||
- [Change the PHP-CLI Version](#Change-the-PHP-CLI-Version)
|
- [Change the PHP-CLI Version](#Change-the-PHP-CLI-Version)
|
||||||
|
- [Install xDebug](#Install-xDebug)
|
||||||
- [Misc](#Misc)
|
- [Misc](#Misc)
|
||||||
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
|
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
|
||||||
- [Find your Docker IP Address](#Find-Docker-IP-Address)
|
- [Find your Docker IP Address](#Find-Docker-IP-Address)
|
||||||
- [Use custom Domain](#Use-custom-Domain)
|
- [Use custom Domain](#Use-custom-Domain)
|
||||||
|
- [Enable Global Composer Build Install](#Enable-Global-Composer-Build-Install)
|
||||||
|
- [Install Prestissimo](#Install-Prestissimo)
|
||||||
|
- [Install Node + NVM](#Install-Node)
|
||||||
- [Debugging](#debugging)
|
- [Debugging](#debugging)
|
||||||
- [Help & Questions](#Help)
|
- [Help & Questions](#Help)
|
||||||
|
|
||||||
@ -70,18 +77,18 @@ docker-compose up nginx mysql redis
|
|||||||
<a name="features"></a>
|
<a name="features"></a>
|
||||||
### Features
|
### Features
|
||||||
|
|
||||||
- Easy switch between PHP versions: 7.0 - 5.6 - 5.5 ...
|
- Easy switch between PHP versions: 7.0, 5.6, 5.5...
|
||||||
- Choose your favorite database engine: MySQL - Postgres - Redis ...
|
- Choose your favorite database engine: MySQL, Postgres, MariaDB...
|
||||||
- Run your own combination of software's: Memcached - MariaDB ...
|
- Run your own combination of software's: Memcached, HHVM, Beanstalkd...
|
||||||
- Every software runs on a separate container: PHP-FPM - NGINX ...
|
- Every software runs on a separate container: PHP-FPM, NGINX, PHP-CLI...
|
||||||
- Easy to customize any container, with simple edit to the `dockerfile`.
|
- Easy to customize any container, with simple edit to the `dockerfile`.
|
||||||
- All Images extends from an official base Image. (Trusted base Images).
|
- All Images extends from an official base Image. (Trusted base Images).
|
||||||
- Pre-configured Nginx for Laravel.
|
- Pre-configured Nginx for Laravel.
|
||||||
- Data container, to keep Data safe and accessible.
|
|
||||||
- Easy to apply configurations inside containers.
|
- Easy to apply configurations inside containers.
|
||||||
- Clean and well structured Dockerfiles (`dockerfile`).
|
- Clean and well structured Dockerfiles (`dockerfile`).
|
||||||
- Latest version of the Docker Compose file (`docker-compose`).
|
- Latest version of the Docker Compose file (`docker-compose`).
|
||||||
- Everything is visible and editable.
|
- Everything is visible and editable.
|
||||||
|
- More to come every week..
|
||||||
|
|
||||||
|
|
||||||
<a name="Supported-Containers"></a>
|
<a name="Supported-Containers"></a>
|
||||||
@ -89,18 +96,18 @@ docker-compose up nginx mysql redis
|
|||||||
|
|
||||||
- PHP-FPM (7.0 - 5.6 - 5.5)
|
- PHP-FPM (7.0 - 5.6 - 5.5)
|
||||||
- NGINX
|
- NGINX
|
||||||
|
- HHVM
|
||||||
- MySQL
|
- MySQL
|
||||||
- PostgreSQL
|
- PostgreSQL
|
||||||
- MariaDB
|
- MariaDB
|
||||||
- Neo4j
|
|
||||||
- MongoDB
|
- MongoDB
|
||||||
|
- Neo4j
|
||||||
- Redis
|
- Redis
|
||||||
- Memcached
|
- Memcached
|
||||||
|
- Caddy
|
||||||
- Beanstalkd
|
- Beanstalkd
|
||||||
- Beanstalkd Console
|
- Beanstalkd Console
|
||||||
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano and cURL)
|
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano, cURL and much more)
|
||||||
- Data *(Databases Data Container)*
|
|
||||||
- Application *(Application Code Container)*
|
|
||||||
|
|
||||||
|
|
||||||
>If you can't find your container, build it yourself and add it to this list. Contributions are welcomed :)
|
>If you can't find your container, build it yourself and add it to this list. Contributions are welcomed :)
|
||||||
@ -127,7 +134,7 @@ Seriously!!!
|
|||||||
|
|
||||||
Instead of providing a full Virtual Machines, like you get with Vagrant, Docker provides you **lightweight** Virtual Containers, that share the same kernel and allow to safely execute independent processes.
|
Instead of providing a full Virtual Machines, like you get with Vagrant, Docker provides you **lightweight** Virtual Containers, that share the same kernel and allow to safely execute independent processes.
|
||||||
|
|
||||||
In addition to the speed, Docker gives tens of features that cannot be achieved with Vagrant.
|
In addition to the speed, Docker gives tons of features that cannot be achieved with Vagrant.
|
||||||
|
|
||||||
Most importantly Docker can run on Development and on Production (same environment everywhere). While Vagrant is designed for Development only, (so you have to re-provision your server on Production every time).
|
Most importantly Docker can run on Development and on Production (same environment everywhere). While Vagrant is designed for Development only, (so you have to re-provision your server on Production every time).
|
||||||
|
|
||||||
@ -139,10 +146,9 @@ LaraDock and [Homestead](https://laravel.com/docs/master/homestead) both gives y
|
|||||||
|
|
||||||
- Homestead is a tool that controls Vagrant for you (using Homestead special commands). And Vagrant manages your Virtual Machine.
|
- Homestead is a tool that controls Vagrant for you (using Homestead special commands). And Vagrant manages your Virtual Machine.
|
||||||
|
|
||||||
- LaraDock is a tool that controls Docker for you (using Docker Compose official commands). And Docker manages you Virtual Containers.
|
- LaraDock is a tool that controls Docker for you (using Docker & Docker Compose official commands). And Docker manages your Virtual Containers.
|
||||||
|
|
||||||
Running a virtual Container is much faster than running a full virtual Machine.
|
Running a virtual Container is much faster than running a full virtual Machine. Thus **LaraDock is much faster than Homestead**.
|
||||||
<br>Thus **LaraDock is much faster than Homestead**.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -150,16 +156,12 @@ Running a virtual Container is much faster than running a full virtual Machine.
|
|||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
| Linux | Windows & MAC |
|
| Linux | Windows & MAC |
|
||||||
|-----------------------------------------------------------------------------------------|---------------------------------------------------------|
|
|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
|
||||||
| [Laravel](https://laravel.com/docs/master/installation) | [Laravel](https://laravel.com/docs/master/installation) |
|
| [Laravel](https://laravel.com/docs/master/installation) | [Laravel](https://laravel.com/docs/master/installation) |
|
||||||
| [Git](https://git-scm.com/downloads) | [Git](https://git-scm.com/downloads) |
|
| [Git](https://git-scm.com/downloads) | [Git](https://git-scm.com/downloads) |
|
||||||
| [Docker Engine](https://docs.docker.com/engine/installation/linux/ubuntulinux) | [Docker Toolbox](https://www.docker.com/toolbox) |
|
| [Docker Engine](https://docs.docker.com/engine/installation/linux/ubuntulinux) | [Docker Toolbox](https://www.docker.com/toolbox) OR [Native Docker](https://beta.docker.com/) |
|
||||||
| [Docker Compose](https://docs.docker.com/compose/install) | |
|
| [Docker Compose](https://docs.docker.com/compose/install) | |
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Demo"></a>
|
<a name="Demo"></a>
|
||||||
## Demo Video
|
## Demo Video
|
||||||
|
|
||||||
@ -169,7 +171,7 @@ What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwD
|
|||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
||||||
1 - Clone the `LaraDock` repository.
|
1 - Clone the `LaraDock` repository:
|
||||||
|
|
||||||
**A)** If you already have a Laravel project, clone this repository on your `Laravel` root direcotry:
|
**A)** If you already have a Laravel project, clone this repository on your `Laravel` root direcotry:
|
||||||
|
|
||||||
@ -208,10 +210,10 @@ docker-compose up -d nginx mysql
|
|||||||
|
|
||||||
You can select your own combination of container form this list:
|
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`.
|
`nginx`, `hhvm` ,`mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `memcached`, `beanstalkd`, `beanstalkd-console`, `caddy`, `workspace`, `php-fpm`.
|
||||||
|
|
||||||
|
|
||||||
**Note**: `workspace`, `data`, `php-fpm` and `application` will run automatically in most of the cases.
|
**Note**: `workspace` and `php-fpm` will run automatically in most of the cases, so no need to specify them in the `up` command.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -259,6 +261,7 @@ If you need a special support. Contact me, more details in the [Help & Questions
|
|||||||
<a name="Documentation"></a>
|
<a name="Documentation"></a>
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
|
**Note:** this documentation doesn't cover the Docker Beta *(Native Docker on MAC and Windows)*. However, the commands are very similar. We are planning to cover the Docker Beta soon.
|
||||||
|
|
||||||
|
|
||||||
<a name="Docker"></a>
|
<a name="Docker"></a>
|
||||||
@ -518,13 +521,6 @@ Composer update
|
|||||||
phpunit
|
phpunit
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Use-Redis"></a>
|
<a name="Use-Redis"></a>
|
||||||
### Use Redis
|
### Use Redis
|
||||||
@ -581,14 +577,47 @@ composer require predis/predis:^1.0
|
|||||||
<a name="Use-Mongo"></a>
|
<a name="Use-Mongo"></a>
|
||||||
### Use Mongo
|
### Use Mongo
|
||||||
|
|
||||||
1 - First make sure you run the MongoDB Container (`mongo`) with the `docker-compose up` command.
|
1 - First install `mongo` in the Workspace and the PHP-FPM Containers:
|
||||||
|
<br>
|
||||||
|
a) open the `docker-compose.yml` file
|
||||||
|
<br>
|
||||||
|
b) search for the `INSTALL_MONGO` argument under the Workspace Container
|
||||||
|
<br>
|
||||||
|
c) set it to `true`
|
||||||
|
<br>
|
||||||
|
d) search for the `INSTALL_MONGO` argument under the PHP-FPM Container
|
||||||
|
<br>
|
||||||
|
e) set it to `true`
|
||||||
|
|
||||||
|
It should be like this:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
workspace:
|
||||||
|
build:
|
||||||
|
context: ./workspace
|
||||||
|
args:
|
||||||
|
- INSTALL_MONGO=true
|
||||||
|
...
|
||||||
|
php-fpm:
|
||||||
|
build:
|
||||||
|
context: ./php-fpm
|
||||||
|
args:
|
||||||
|
- INSTALL_MONGO=true
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
2 - Re-build the containers `docker-compose build workspace php-fpm`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3 - Run the MongoDB Container (`mongo`) with the `docker-compose up` command.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up -d mongo
|
docker-compose up -d mongo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
2 - Add the MongoDB configurations to the `config/database.php` config file:
|
4 - Add the MongoDB configurations to the `config/database.php` config file:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
'connections' => [
|
'connections' => [
|
||||||
@ -610,24 +639,24 @@ docker-compose up -d mongo
|
|||||||
],
|
],
|
||||||
```
|
```
|
||||||
|
|
||||||
3 - Open your Laravel's `.env` file and update the following variables:
|
5 - Open your Laravel's `.env` file and update the following variables:
|
||||||
|
|
||||||
- set the `DB_HOST` to your `Docker-IP`.
|
- set the `DB_HOST` to your `Docker-IP`.
|
||||||
- set the `DB_PORT` to `27017`.
|
- set the `DB_PORT` to `27017`.
|
||||||
- set the `DB_DATABASE` to `database`.
|
- 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.
|
6 - Finally make sure you have the `jenssegers/mongodb` package installed via Composer and its Service Provider is added.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require jenssegers/mongodb
|
composer require jenssegers/mongodb
|
||||||
```
|
```
|
||||||
More details about this [here](https://github.com/jenssegers/laravel-mongodb#installation).
|
More details about this [here](https://github.com/jenssegers/laravel-mongodb#installation).
|
||||||
|
|
||||||
5 - Test it:
|
7 - Test it:
|
||||||
|
|
||||||
- First let your Models extend from the Mongo Eloquent Model. Check the [documentation](https://github.com/jenssegers/laravel-mongodb#eloquent).
|
- 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 exec -it laradock_workspace_1 bash`.
|
- Enter the Workspace Container `docker exec -it laradock_workspace_1 bash`.
|
||||||
- Migrate the Database `php artisan migrate`.
|
- Migrate the Database `php artisan migrate`.
|
||||||
|
|
||||||
|
|
||||||
@ -663,20 +692,18 @@ The PHP-CLI extensions should be installed in `workspace/Dockerfile`.
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Change-the-PHP-FPM-Version"></a>
|
<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.
|
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.
|
>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.
|
||||||
|
|
||||||
|
#### A) Switch from PHP `7.0` to PHP `5.6`
|
||||||
|
|
||||||
1 - Open the `docker-compose.yml`.
|
1 - Open the `docker-compose.yml`.
|
||||||
|
|
||||||
2 - Search for `Dockerfile-70` in the PHP container section.
|
2 - Search for `Dockerfile-70` in the PHP container section.
|
||||||
|
|
||||||
3 - Change the version number.
|
3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-5`, like this:
|
||||||
<br>
|
|
||||||
Example to select version 5.6 instead of 7.0 you have to replace `Dockerfile-70` with `Dockerfile-56`.
|
|
||||||
|
|
||||||
Sample:
|
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
php-fpm:
|
php-fpm:
|
||||||
@ -685,19 +712,35 @@ php-fpm:
|
|||||||
dockerfile: Dockerfile-70
|
dockerfile: Dockerfile-70
|
||||||
```
|
```
|
||||||
|
|
||||||
Supported Versions:
|
|
||||||
|
|
||||||
- For (PHP 7.0.*) use `Dockerfile-70`
|
|
||||||
- For (PHP 5.6.*) use `Dockerfile-56`
|
|
||||||
- For (PHP 5.5.*) use `Dockerfile-55`
|
|
||||||
|
|
||||||
|
|
||||||
4 - Finally rebuild the container
|
4 - Finally rebuild the container
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose build php
|
docker-compose build php
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### B) Switch from PHP `7.0` or `5.6` to PHP `5.5`
|
||||||
|
|
||||||
|
1 - Follow the steps of (Switch from PHP `7.0` to PHP `5.6`) except the last one "rebuilding container".
|
||||||
|
|
||||||
|
2 - Open the `docker-compose.yml` again and make sure you are using `Dockerfile-5` like this:
|
||||||
|
|
||||||
|
```txt
|
||||||
|
php-fpm:
|
||||||
|
build:
|
||||||
|
context: ./php-fpm
|
||||||
|
dockerfile: Dockerfile-5
|
||||||
|
```
|
||||||
|
|
||||||
|
3 - Open `php-fpm/Dockerfile-5` file and on the first line replace the PHP version from (`FROM php:5.6-fpm`) to (`FROM php:5.5-fpm`).
|
||||||
|
|
||||||
|
4 - Now you can rebuild the container
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose build php
|
||||||
|
```
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
For more details about the PHP base image, visit the [official PHP docker images](https://hub.docker.com/_/php/).
|
For more details about the PHP base image, visit the [official PHP docker images](https://hub.docker.com/_/php/).
|
||||||
|
|
||||||
|
|
||||||
@ -722,10 +765,40 @@ Right now you have to manually edit the `Dockerfile` or create a new one like it
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Install-xDebug"></a>
|
||||||
|
### Install xDebug
|
||||||
|
|
||||||
|
1 - First install `xDebug` in the Workspace and the PHP-FPM Containers:
|
||||||
|
<br>
|
||||||
|
a) open the `docker-compose.yml` file
|
||||||
|
<br>
|
||||||
|
b) search for the `INSTALL_XDEBUG` argument under the Workspace Container
|
||||||
|
<br>
|
||||||
|
c) set it to `true`
|
||||||
|
<br>
|
||||||
|
d) search for the `INSTALL_XDEBUG` argument under the PHP-FPM Container
|
||||||
|
<br>
|
||||||
|
e) set it to `true`
|
||||||
|
|
||||||
|
It should be like this:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
workspace:
|
||||||
|
build:
|
||||||
|
context: ./workspace
|
||||||
|
args:
|
||||||
|
- INSTALL_XDEBUG=true
|
||||||
|
...
|
||||||
|
php-fpm:
|
||||||
|
build:
|
||||||
|
context: ./php-fpm
|
||||||
|
args:
|
||||||
|
- INSTALL_XDEBUG=true
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
2 - Re-build the containers `docker-compose build workspace php-fpm`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -829,30 +902,99 @@ server_name laravel.dev;
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Enable-Global-Composer-Build-Install"></a>
|
||||||
|
### Enable Global Composer Build Install
|
||||||
|
|
||||||
|
Enabling Global Composer Install during the build for the container allows you to get your composer requirements installed and available in the container after the build is done.
|
||||||
|
|
||||||
|
1 - open the `docker-compose.yml` file
|
||||||
|
|
||||||
|
2 - search for the `COMPOSER_GLOBAL_INSTALL` argument under the Workspace Container and set it to `true`
|
||||||
|
|
||||||
|
It should be like this:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
workspace:
|
||||||
|
build:
|
||||||
|
context: ./workspace
|
||||||
|
args:
|
||||||
|
- COMPOSER_GLOBAL_INSTALL=true
|
||||||
|
...
|
||||||
|
```
|
||||||
|
3 - now add your dependencies to `workspace/composer.json`
|
||||||
|
|
||||||
|
4 - rebuild the Workspace Container `docker-compose build workspace`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Install-Prestissimo"></a>
|
||||||
|
### Install Prestissimo
|
||||||
|
|
||||||
|
[Prestissimo](https://github.com/hirak/prestissimo) is a plugin for composer which enables parallel install functionality.
|
||||||
|
|
||||||
|
1 - Enable Running Global Composer Install during the Build:
|
||||||
|
|
||||||
|
Click on this [Enable Global Composer Build Install](#Enable-Global-Composer-Build-Install) and do steps 1 and 2 only then continue here.
|
||||||
|
|
||||||
|
2 - Add prestissimo as requirement in Composer:
|
||||||
|
|
||||||
|
a - now open the `workspace/composer.json` file
|
||||||
|
|
||||||
|
b - add `"hirak/prestissimo": "^0.3"` as requirement
|
||||||
|
|
||||||
|
c - rebuild the Workspace Container `docker-compose build workspace`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Install-Node"></a>
|
||||||
|
### Install Node + NVM
|
||||||
|
|
||||||
|
To install NVM and NodeJS in the Workspace container
|
||||||
|
|
||||||
|
1 - Open the `docker-compose.yml` file
|
||||||
|
|
||||||
|
2 - Search for the `INSTALL_NODE` argument under the Workspace Container and set it to `true`
|
||||||
|
|
||||||
|
It should be like this:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
workspace:
|
||||||
|
build:
|
||||||
|
context: ./workspace
|
||||||
|
args:
|
||||||
|
- INSTALL_NODE=true
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
3 - Re-build the container `docker-compose build workspace`
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="debugging"></a>
|
<a name="debugging"></a>
|
||||||
### Debugging
|
### Debugging
|
||||||
|
|
||||||
*Here's a list of the common problems you might face, and the possible solutions.*
|
*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!
|
#### I see a blank (white) page instead of the Laravel 'Welcome' page!
|
||||||
|
|
||||||
run this command from the Laravel root directory:
|
Run the following command from the Laravel root directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo chmod -R 777 storage bootstrap/cache
|
sudo chmod -R 777 storage bootstrap/cache
|
||||||
```
|
```
|
||||||
|
|
||||||
#### + I see "Welcome to nginx" instead of the Laravel App!
|
#### I see "Welcome to nginx" instead of the Laravel App!
|
||||||
|
|
||||||
use `http://127.0.0.1` instead of `http://localhost` in your browser.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Use `http://127.0.0.1` (or [your Docker IP](#Find-Docker-IP-Address)) instead of `http://localhost` in your browser.
|
||||||
|
|
||||||
|
#### I see an error message containing `address already in use`
|
||||||
|
|
||||||
|
Make sure the ports for the services that you are trying to run (80, 3306, etc.) are not being used already by other programs, such as a built in `apache`/`httpd` service or other development tools you have installed.
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@ -864,17 +1006,34 @@ This little project was built by one man who has a full time job and many respon
|
|||||||
<a name="Help"></a>
|
<a name="Help"></a>
|
||||||
## Help & Questions
|
## Help & Questions
|
||||||
|
|
||||||
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.
|
Join the chat room on [Gitter](https://gitter.im/LaraDock/laradock) and get help and support from the community.
|
||||||
|
|
||||||
For general questions you can open [Issues](https://github.com/laradock/laradock/issues) here on Github (We will label them as questions).
|
You can as well can open an [issue](https://github.com/laradock/laradock/issues) on Github (will be labeled as Question) and discuss it with people on [Gitter](https://gitter.im/LaraDock/laradock).
|
||||||
|
|
||||||
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`).
|
|
||||||
|
|
||||||
|
For special help with Docker and/or Laravel, you can schedule a live call with the creator of this project at [Codementor.io](https://www.codementor.io/mahmoudz).
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
|
**Creator:**
|
||||||
|
|
||||||
- [Mahmoud Zalt](https://github.com/Mahmoudz) (Twitter [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt))
|
- [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)
|
|
||||||
|
**Main Contributors:**
|
||||||
|
|
||||||
|
- [Eric Pfeiffer (computerfr33k)](https://github.com/computerfr33k)
|
||||||
|
- [Orette](https://github.com/orette)
|
||||||
|
- [Jack Fletcher (Kauhat)](https://github.com/Kauhat)
|
||||||
|
- [Bo-Yi Wu (appleboy)](https://github.com/appleboy)
|
||||||
|
- [Amin Mkh (AminMkh)](https://github.com/AminMkh)
|
||||||
|
- [Matthew Tonkin Dunn (mattythebatty)](https://github.com/mattythebatty)
|
||||||
|
- [Zhivitsa Kirill (zhikiri)](https://github.com/zhikiri)
|
||||||
|
- [Benmag](https://github.com/benmag)
|
||||||
|
|
||||||
|
**Awesome People:**
|
||||||
|
|
||||||
|
- [Contributors](https://github.com/LaraDock/laradock/graphs/contributors)
|
||||||
|
- [Supporters](https://github.com/LaraDock/laradock/issues?utf8=%E2%9C%93&q=)
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
@ -7,8 +7,10 @@ RUN apt-get update && apt-get install -y curl
|
|||||||
RUN curl -sL https://github.com/ptrofimov/beanstalk_console/archive/master.tar.gz | tar xvz -C /tmp
|
RUN curl -sL https://github.com/ptrofimov/beanstalk_console/archive/master.tar.gz | tar xvz -C /tmp
|
||||||
RUN mv /tmp/beanstalk_console-master /source
|
RUN mv /tmp/beanstalk_console-master /source
|
||||||
|
|
||||||
RUN apt-get remove --purge -y curl && apt-get autoclean && apt-get clean
|
RUN apt-get remove --purge -y curl &&
|
||||||
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
apt-get autoclean &&
|
||||||
|
apt-get clean &&
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
EXPOSE 2080
|
EXPOSE 2080
|
||||||
|
|
||||||
|
12
caddy/Caddyfile
Normal file
12
caddy/Caddyfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Docs: https://caddyserver.com/docs/caddyfile
|
||||||
|
0.0.0.0:80
|
||||||
|
fastcgi / php-fpm:9000 php
|
||||||
|
rewrite {
|
||||||
|
to /index.php?{query}
|
||||||
|
}
|
||||||
|
browse
|
||||||
|
log stdout
|
||||||
|
errors stdout
|
||||||
|
# Uncomment to enable TLS (HTTPS)
|
||||||
|
# Change the first list to listen on port 443 when enabling TLS
|
||||||
|
#tls self_signed
|
25
caddy/Dockerfile
Normal file
25
caddy/Dockerfile
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
FROM alpine:3.4
|
||||||
|
|
||||||
|
MAINTAINER Eric Pfeiffer <computerfr33k@users.noreply.github.com>
|
||||||
|
|
||||||
|
LABEL caddy_version="0.9.0" architecture="amd64"
|
||||||
|
|
||||||
|
RUN apk update \
|
||||||
|
&& apk upgrade \
|
||||||
|
&& apk add tar curl
|
||||||
|
|
||||||
|
RUN curl --silent --show-error --fail --location \
|
||||||
|
--header "Accept: application/tar+gzip, application/x-gzip, application/octet-stream" -o - \
|
||||||
|
"https://github.com/mholt/caddy/releases/download/v0.9.0/caddy_linux_amd64.tar.gz" \
|
||||||
|
| tar --no-same-owner -C /usr/bin/ -xz caddy_linux_amd64 \
|
||||||
|
&& mv /usr/bin/caddy_linux_amd64 /usr/bin/caddy \
|
||||||
|
&& chmod 0755 /usr/bin/caddy \
|
||||||
|
&& /usr/bin/caddy -version
|
||||||
|
|
||||||
|
EXPOSE 80 443 2015
|
||||||
|
|
||||||
|
WORKDIR /var/www/laravel/public
|
||||||
|
|
||||||
|
ENTRYPOINT ["caddy"]
|
||||||
|
|
||||||
|
CMD ["-conf", "/etc/Caddyfile"]
|
@ -2,45 +2,45 @@ version: '2'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
|
### Workspace Utilities Container ###########################
|
||||||
|
|
||||||
|
workspace:
|
||||||
|
build:
|
||||||
|
context: ./workspace
|
||||||
|
args:
|
||||||
|
- INSTALL_MONGO=false
|
||||||
|
- INSTALL_XDEBUG=false
|
||||||
|
- INSTALL_NODE=false
|
||||||
|
- COMPOSER_GLOBAL_INSTALL=false
|
||||||
|
volumes_from:
|
||||||
|
- volumes_source
|
||||||
|
tty: true
|
||||||
|
|
||||||
### PHP-FPM Container #######################################
|
### PHP-FPM Container #######################################
|
||||||
|
|
||||||
php-fpm:
|
php-fpm:
|
||||||
build:
|
build:
|
||||||
context: ./php-fpm
|
context: ./php-fpm
|
||||||
|
args:
|
||||||
|
- INSTALL_MONGO=false
|
||||||
|
- INSTALL_XDEBUG=false
|
||||||
dockerfile: Dockerfile-70
|
dockerfile: Dockerfile-70
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- application
|
- volumes_source
|
||||||
expose:
|
expose:
|
||||||
- "9000"
|
- "9000"
|
||||||
links:
|
links:
|
||||||
- workspace
|
- workspace
|
||||||
|
|
||||||
### Laravel Application Code Container ######################
|
|
||||||
|
|
||||||
application:
|
|
||||||
build: ./application
|
|
||||||
volumes:
|
|
||||||
- ../:/var/www/laravel
|
|
||||||
|
|
||||||
### Databases Data Container ################################
|
|
||||||
|
|
||||||
data:
|
|
||||||
build: ./data
|
|
||||||
volumes:
|
|
||||||
- /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 ##################################
|
### Nginx Server Container ##################################
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
build: ./nginx
|
build:
|
||||||
|
context: ./nginx
|
||||||
|
args:
|
||||||
|
- PHP_UPSTREAM=php-fpm
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- application
|
- volumes_source
|
||||||
volumes:
|
volumes:
|
||||||
- ./logs/nginx/:/var/log/nginx
|
- ./logs/nginx/:/var/log/nginx
|
||||||
ports:
|
ports:
|
||||||
@ -49,12 +49,23 @@ services:
|
|||||||
links:
|
links:
|
||||||
- php-fpm
|
- php-fpm
|
||||||
|
|
||||||
|
### HHVM Container ##########################################
|
||||||
|
|
||||||
|
hhvm:
|
||||||
|
build: ./hhvm
|
||||||
|
volumes_from:
|
||||||
|
- volumes_source
|
||||||
|
expose:
|
||||||
|
- "9000"
|
||||||
|
links:
|
||||||
|
- workspace
|
||||||
|
|
||||||
### MySQL Container #########################################
|
### MySQL Container #########################################
|
||||||
|
|
||||||
mysql:
|
mysql:
|
||||||
build: ./mysql
|
build: ./mysql
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "3306:3306"
|
- "3306:3306"
|
||||||
environment:
|
environment:
|
||||||
@ -68,7 +79,7 @@ services:
|
|||||||
postgres:
|
postgres:
|
||||||
build: ./postgres
|
build: ./postgres
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
environment:
|
environment:
|
||||||
@ -81,7 +92,7 @@ services:
|
|||||||
mariadb:
|
mariadb:
|
||||||
build: ./mariadb
|
build: ./mariadb
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "3306:3306"
|
- "3306:3306"
|
||||||
environment:
|
environment:
|
||||||
@ -100,7 +111,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- NEO4J_AUTH=homestead:secret
|
- NEO4J_AUTH=homestead:secret
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
|
|
||||||
### MongoDB Container #######################################
|
### MongoDB Container #######################################
|
||||||
|
|
||||||
@ -109,14 +120,14 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "27017:27017"
|
- "27017:27017"
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
|
|
||||||
### Redis Container #########################################
|
### Redis Container #########################################
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
build: ./redis
|
build: ./redis
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "6379:6379"
|
||||||
|
|
||||||
@ -125,7 +136,7 @@ services:
|
|||||||
memcached:
|
memcached:
|
||||||
build: ./memcached
|
build: ./memcached
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "11211:11211"
|
- "11211:11211"
|
||||||
links:
|
links:
|
||||||
@ -150,12 +161,39 @@ services:
|
|||||||
links:
|
links:
|
||||||
- beanstalkd
|
- beanstalkd
|
||||||
|
|
||||||
### Workspace Utilities Container ###########################
|
### Caddy Server Container ##################################
|
||||||
|
|
||||||
workspace:
|
caddy:
|
||||||
build: ./workspace
|
build: ./caddy
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- application
|
- volumes_source
|
||||||
tty: true
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
- "2015:2015"
|
||||||
|
volumes:
|
||||||
|
- ./caddy/Caddyfile:/etc/Caddyfile
|
||||||
|
links:
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
|
### Laravel Application Code Container ######################
|
||||||
|
|
||||||
|
volumes_source:
|
||||||
|
build: ./volumes/application
|
||||||
|
volumes:
|
||||||
|
- ../:/var/www/laravel
|
||||||
|
|
||||||
|
### Databases Data Container ################################
|
||||||
|
|
||||||
|
volumes_data:
|
||||||
|
build: ./volumes/data
|
||||||
|
volumes:
|
||||||
|
- /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
|
||||||
|
|
||||||
### Add more Containers below ###############################
|
### Add more Containers below ###############################
|
||||||
|
23
hhvm/Dockerfile
Normal file
23
hhvm/Dockerfile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
FROM ubuntu:14.04
|
||||||
|
|
||||||
|
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
|
||||||
|
|
||||||
|
RUN apt-get update -y \
|
||||||
|
&& apt-get install -y software-properties-common \
|
||||||
|
&& add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" \
|
||||||
|
&& apt-get update -y \
|
||||||
|
&& apt-get install -y hhvm \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN mkdir -p /var/www/laravel
|
||||||
|
|
||||||
|
ADD server.ini /etc/hhvm/server.ini
|
||||||
|
|
||||||
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
WORKDIR /var/www/laravel
|
||||||
|
|
||||||
|
CMD ["/usr/bin/hhvm", "-m", "server", "-c", "/etc/hhvm/server.ini"]
|
||||||
|
|
||||||
|
EXPOSE 9000
|
20
hhvm/server.ini
Normal file
20
hhvm/server.ini
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
; php options
|
||||||
|
|
||||||
|
pid = /var/run/hhvm/pid
|
||||||
|
|
||||||
|
; hhvm specific
|
||||||
|
hhvm.server.port = 9000
|
||||||
|
hhvm.server.type = fastcgi
|
||||||
|
hhvm.server.default_document = index.php
|
||||||
|
hhvm.server.error_document404 = index.php
|
||||||
|
hhvm.server.upload.upload_max_file_size = 25M
|
||||||
|
hhvm.log.level = Error
|
||||||
|
hhvm.log.header = true
|
||||||
|
hhvm.log.access[default][file] = /var/log/hhvm/access.log
|
||||||
|
hhvm.log.access[default][format] = "%h %l %u %t \"%r\" %>s %b"
|
||||||
|
hhvm.server.source_root=/var/www/laravel/public
|
||||||
|
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
|
||||||
|
|
||||||
|
; Uncomment to log to files instead of STDOUT
|
||||||
|
;hhvm.log.use_log_file = true
|
||||||
|
;hhvm.log.file = /var/log/hhvm/error.log
|
@ -5,7 +5,9 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
|||||||
ADD nginx.conf /etc/nginx/
|
ADD nginx.conf /etc/nginx/
|
||||||
ADD laravel.conf /etc/nginx/sites-available/
|
ADD laravel.conf /etc/nginx/sites-available/
|
||||||
|
|
||||||
RUN echo "upstream php-upstream { server php-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf
|
ARG PHP_UPSTREAM
|
||||||
|
|
||||||
|
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM}:9000; }" > /etc/nginx/conf.d/upstream.conf
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ http {
|
|||||||
tcp_nodelay on;
|
tcp_nodelay on;
|
||||||
keepalive_timeout 15;
|
keepalive_timeout 15;
|
||||||
types_hash_max_size 2048;
|
types_hash_max_size 2048;
|
||||||
|
client_max_body_size 20M;
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
access_log on;
|
access_log on;
|
||||||
|
94
php-fpm/Dockerfile-5
Normal file
94
php-fpm/Dockerfile-5
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Image Setup
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
FROM php:5.6-fpm
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
||||||
|
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
|
||||||
|
#
|
||||||
|
|
||||||
|
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
|
||||||
|
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
|
curl \
|
||||||
|
libmemcached-dev \
|
||||||
|
libz-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libjpeg-dev \
|
||||||
|
libpng12-dev \
|
||||||
|
libfreetype6-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libmcrypt-dev
|
||||||
|
|
||||||
|
# Install the PHP mcrypt extention
|
||||||
|
RUN docker-php-ext-install mcrypt
|
||||||
|
|
||||||
|
# Install the PHP pdo_mysql extention
|
||||||
|
RUN docker-php-ext-install pdo_mysql
|
||||||
|
|
||||||
|
# Install the PHP pdo_pgsql extention
|
||||||
|
RUN docker-php-ext-install pdo_pgsql
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# gd:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Install the PHP gd library
|
||||||
|
RUN docker-php-ext-install gd && \
|
||||||
|
docker-php-ext-configure gd \
|
||||||
|
--enable-gd-native-ttf \
|
||||||
|
--with-jpeg-dir=/usr/lib \
|
||||||
|
--with-freetype-dir=/usr/include/freetype2
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# MongoDB:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG INSTALL_MONGO=true
|
||||||
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
|
# Install the mongodb extention
|
||||||
|
pecl install mongodb \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# xDebug:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG INSTALL_XDEBUG=true
|
||||||
|
ENV INSTALL_XDEBUG ${INSTALL_XDEBUG}
|
||||||
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
||||||
|
# Install the xdebug extention
|
||||||
|
pecl install xdebug && \
|
||||||
|
docker-php-ext-enable xdebug \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Final Touch
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
RUN rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
WORKDIR /var/www/laravel
|
||||||
|
|
||||||
|
CMD ["php-fpm"]
|
||||||
|
|
||||||
|
EXPOSE 9000
|
@ -1,45 +0,0 @@
|
|||||||
FROM php:5.5-fpm
|
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
|
||||||
|
|
||||||
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
|
||||||
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
libpq-dev \
|
|
||||||
libmemcached-dev \
|
|
||||||
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 \
|
|
||||||
gd
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
CMD ["php-fpm"]
|
|
||||||
|
|
||||||
EXPOSE 9000
|
|
@ -1,45 +0,0 @@
|
|||||||
FROM php:5.6-fpm
|
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
|
||||||
|
|
||||||
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
|
||||||
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
libpq-dev \
|
|
||||||
libmemcached-dev \
|
|
||||||
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 \
|
|
||||||
gd
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
CMD ["php-fpm"]
|
|
||||||
|
|
||||||
EXPOSE 9000
|
|
@ -1,3 +1,9 @@
|
|||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Image Setup
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
FROM php:7.0-fpm
|
FROM php:7.0-fpm
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
@ -5,40 +11,97 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
|||||||
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
||||||
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y \
|
#
|
||||||
libpq-dev \
|
#--------------------------------------------------------------------------
|
||||||
libmemcached-dev \
|
# Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
|
||||||
|
#
|
||||||
|
|
||||||
|
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
|
||||||
|
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --no-install-recommends \
|
||||||
curl \
|
curl \
|
||||||
|
libmemcached-dev \
|
||||||
|
libz-dev \
|
||||||
|
libpq-dev \
|
||||||
|
libjpeg-dev \
|
||||||
libpng12-dev \
|
libpng12-dev \
|
||||||
libfreetype6-dev \
|
libfreetype6-dev \
|
||||||
--no-install-recommends \
|
libssl-dev \
|
||||||
&& rm -r /var/lib/apt/lists/*
|
libmcrypt-dev
|
||||||
|
|
||||||
# configure gd library
|
# Install the PHP mcrypt extention
|
||||||
RUN docker-php-ext-configure gd \
|
RUN docker-php-ext-install mcrypt
|
||||||
|
|
||||||
|
# Install the PHP pdo_mysql extention
|
||||||
|
RUN docker-php-ext-install pdo_mysql
|
||||||
|
|
||||||
|
# Install the PHP pdo_pgsql extention
|
||||||
|
RUN docker-php-ext-install pdo_pgsql
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# gd:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Install the PHP gd library
|
||||||
|
RUN docker-php-ext-install gd && \
|
||||||
|
docker-php-ext-configure gd \
|
||||||
--enable-gd-native-ttf \
|
--enable-gd-native-ttf \
|
||||||
|
--with-jpeg-dir=/usr/lib \
|
||||||
--with-freetype-dir=/usr/include/freetype2
|
--with-freetype-dir=/usr/include/freetype2
|
||||||
|
|
||||||
# Install extensions using the helper script provided by the base image
|
#####################################
|
||||||
RUN docker-php-ext-install \
|
# MongoDB:
|
||||||
pdo_mysql \
|
#####################################
|
||||||
pdo_pgsql \
|
|
||||||
gd
|
|
||||||
|
|
||||||
# Install Memcached for php 7
|
ARG INSTALL_MONGO=true
|
||||||
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
|
# Install the mongodb extention
|
||||||
|
pecl install mongodb \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# xDebug:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG INSTALL_XDEBUG=true
|
||||||
|
ENV INSTALL_XDEBUG ${INSTALL_XDEBUG}
|
||||||
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
||||||
|
# Install the xdebug extention
|
||||||
|
pecl install xdebug && \
|
||||||
|
docker-php-ext-enable xdebug \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Memcached:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Install the memcached extention
|
||||||
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
|
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
|
||||||
&& mkdir -p /usr/src/php/ext/memcached \
|
&& mkdir -p memcached \
|
||||||
&& tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
||||||
&& docker-php-ext-configure memcached \
|
&& ( \
|
||||||
&& docker-php-ext-install memcached \
|
cd memcached \
|
||||||
&& rm /tmp/memcached.tar.gz
|
&& phpize \
|
||||||
|
&& ./configure \
|
||||||
|
&& make -j$(nproc) \
|
||||||
|
&& make install \
|
||||||
|
) \
|
||||||
|
&& rm -r memcached \
|
||||||
|
&& rm /tmp/memcached.tar.gz \
|
||||||
|
&& docker-php-ext-enable memcached
|
||||||
|
|
||||||
# Install xdebug
|
#
|
||||||
RUN pecl install xdebug \
|
#--------------------------------------------------------------------------
|
||||||
&& docker-php-ext-enable xdebug
|
# Final Touch
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
# Install mongodb driver
|
RUN rm -r /var/lib/apt/lists/*
|
||||||
RUN pecl install mongodb
|
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
@ -2,3 +2,13 @@ date.timezone=UTC
|
|||||||
display_errors=Off
|
display_errors=Off
|
||||||
log_errors=On
|
log_errors=On
|
||||||
extension=mongodb.so
|
extension=mongodb.so
|
||||||
|
|
||||||
|
; Maximum amount of memory a script may consume (128MB)
|
||||||
|
; http://php.net/memory-limit
|
||||||
|
memory_limit = 128M
|
||||||
|
; Maximum allowed size for uploaded files.
|
||||||
|
; http://php.net/upload-max-filesize
|
||||||
|
upload_max_filesize = 20M
|
||||||
|
; Sets max size of post data allowed.
|
||||||
|
; http://php.net/post-max-size
|
||||||
|
post_max_size = 20M
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Image Setup
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
FROM phusion/baseimage:latest
|
FROM phusion/baseimage:latest
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
@ -11,16 +17,19 @@ ENV LC_CTYPE=UTF-8
|
|||||||
ENV LANG=en_US.UTF-8
|
ENV LANG=en_US.UTF-8
|
||||||
ENV TERM xterm
|
ENV TERM xterm
|
||||||
|
|
||||||
# Install "software-properties-common" (for the "add-apt-repository")
|
|
||||||
RUN apt-get update && apt-get install -y \
|
|
||||||
software-properties-common
|
|
||||||
|
|
||||||
# Add the "PHP 7" ppa
|
# Add the "PHP 7" ppa
|
||||||
RUN add-apt-repository -y \
|
RUN apt-get install -y software-properties-common && \
|
||||||
ppa:ondrej/php
|
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 \
|
#--------------------------------------------------------------------------
|
||||||
|
# Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
# Install "PHP Extentions", "libraries", "Software's"
|
||||||
|
RUN apt-get update && \
|
||||||
|
apt-get install -y --force-yes \
|
||||||
php7.0-cli \
|
php7.0-cli \
|
||||||
php7.0-common \
|
php7.0-common \
|
||||||
php7.0-curl \
|
php7.0-curl \
|
||||||
@ -35,56 +44,105 @@ RUN apt-get update && apt-get install -y --force-yes \
|
|||||||
php7.0-zip \
|
php7.0-zip \
|
||||||
php7.0-memcached \
|
php7.0-memcached \
|
||||||
php7.0-gd \
|
php7.0-gd \
|
||||||
php7.0-xdebug \
|
pkg-config \
|
||||||
php-dev \
|
php-dev \
|
||||||
libcurl4-openssl-dev \
|
libcurl4-openssl-dev \
|
||||||
libedit-dev \
|
libedit-dev \
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
libxml2-dev \
|
libxml2-dev \
|
||||||
xz-utils \
|
xz-utils \
|
||||||
sqlite3 \
|
|
||||||
libsqlite3-dev \
|
libsqlite3-dev \
|
||||||
|
sqlite3 \
|
||||||
git \
|
git \
|
||||||
curl \
|
curl \
|
||||||
vim \
|
vim \
|
||||||
nano
|
nano \
|
||||||
|
&& apt-get clean
|
||||||
|
|
||||||
# Clean up, to free some space
|
#####################################
|
||||||
RUN apt-get clean
|
# Composer:
|
||||||
|
#####################################
|
||||||
|
|
||||||
# remove load xdebug extension (only load on phpunit command)
|
# Install composer and add its bin to the PATH.
|
||||||
RUN sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini
|
RUN curl -s http://getcomposer.org/installer | php && \
|
||||||
|
echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc && \
|
||||||
|
mv composer.phar /usr/local/bin/composer
|
||||||
|
|
||||||
# Add bin folder of composer to PATH.
|
# Add the composer.json
|
||||||
RUN echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc
|
ADD ./composer.json /root/.composer/composer.json
|
||||||
|
|
||||||
# Install Composer
|
# Check if global install need to be runned
|
||||||
RUN curl -s http://getcomposer.org/installer | php \
|
ARG COMPOSER_GLOBAL_INSTALL=true
|
||||||
&& mv composer.phar /usr/local/bin/composer
|
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
|
||||||
|
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
|
||||||
|
# run the install
|
||||||
|
composer global install \
|
||||||
|
;fi
|
||||||
|
|
||||||
# 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
|
# MongoDB:
|
||||||
RUN echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini
|
#####################################
|
||||||
|
|
||||||
# Install nvm (Node Version Manager)
|
# Check if Mongo needs to be installed
|
||||||
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
|
ARG INSTALL_MONGO=true
|
||||||
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
|
# Install the mongodb extension
|
||||||
|
pecl install mongodb && \
|
||||||
|
echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini \
|
||||||
|
;fi
|
||||||
|
|
||||||
ENV NVM_DIR=/root/.nvm
|
#####################################
|
||||||
|
# xDebug:
|
||||||
|
#####################################
|
||||||
|
|
||||||
# Install stable node
|
# Check if xDebug needs to be installed
|
||||||
RUN . ~/.nvm/nvm.sh \
|
ARG INSTALL_XDEBUG=true
|
||||||
&& nvm install stable \
|
ENV INSTALL_XDEBUG ${INSTALL_XDEBUG}
|
||||||
&& nvm use stable \
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
||||||
&& nvm alias stable \
|
# Load the xdebug extension only with phpunit commands
|
||||||
&& npm install -g gulp bower
|
apt-get install -y --force-yes php7.0-xdebug && \
|
||||||
|
sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini && \
|
||||||
|
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Node / NVM:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Check if NVM needs to be installed
|
||||||
|
ARG INSTALL_NODE=true
|
||||||
|
ENV INSTALL_NODE ${INSTALL_NODE}
|
||||||
|
RUN if [ ${INSTALL_NODE} = true ]; then \
|
||||||
|
# Install nvm (A Node Version Manager)
|
||||||
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash \
|
||||||
|
;fi
|
||||||
|
# Again check if NVM needs to be installed
|
||||||
|
# I had to split this condifiton link this because when I get it inside the above if statment is refuses to work!
|
||||||
|
ENV if [ ${INSTALL_NODE} = true ]; then \
|
||||||
|
# Set the ENV
|
||||||
|
NVM_DIR=/root/.nvm \
|
||||||
|
# Install NodeJS with NVM
|
||||||
|
RUN . ~/.nvm/nvm.sh && \
|
||||||
|
nvm install stable && \
|
||||||
|
nvm use stable && \
|
||||||
|
nvm alias stable && \
|
||||||
|
npm install -g gulp bower \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Final Touch
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
# Source the bash
|
# Source the bash
|
||||||
RUN . ~/.bashrc
|
RUN . ~/.bashrc
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
RUN 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
|
WORKDIR /var/www/laravel
|
||||||
|
|
||||||
|
5
workspace/composer.json
Normal file
5
workspace/composer.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"require": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user