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
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -1 +1,3 @@
|
||||
/logs
|
||||
/logs
|
||||
/data
|
||||
.env
|
319
README.md
319
README.md
@ -2,13 +2,16 @@
|
||||
|
||||
[](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.
|
||||
<br>
|
||||
It's like Laravel Homestead but for Docker instead of Vagrant.
|
||||
|
||||
>With LaraDock, use Docker first and learn about it later.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
<br>
|
||||
## Contents
|
||||
@ -45,10 +48,14 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
||||
- [Install PHP Extensions](#Install-PHP-Extensions)
|
||||
- [Change the PHP-FPM Version](#Change-the-PHP-FPM-Version)
|
||||
- [Change the PHP-CLI Version](#Change-the-PHP-CLI-Version)
|
||||
- [Install xDebug](#Install-xDebug)
|
||||
- [Misc](#Misc)
|
||||
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
|
||||
- [Find your Docker IP Address](#Find-Docker-IP-Address)
|
||||
- [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)
|
||||
- [Help & Questions](#Help)
|
||||
|
||||
@ -70,18 +77,18 @@ docker-compose up nginx mysql redis
|
||||
<a name="features"></a>
|
||||
### Features
|
||||
|
||||
- Easy switch between PHP versions: 7.0 - 5.6 - 5.5 ...
|
||||
- Choose your favorite database engine: MySQL - Postgres - Redis ...
|
||||
- Run your own combination of software's: Memcached - MariaDB ...
|
||||
- Every software runs on a separate container: PHP-FPM - NGINX ...
|
||||
- Easy switch between PHP versions: 7.0, 5.6, 5.5...
|
||||
- Choose your favorite database engine: MySQL, Postgres, MariaDB...
|
||||
- Run your own combination of software's: Memcached, HHVM, Beanstalkd...
|
||||
- Every software runs on a separate container: PHP-FPM, NGINX, PHP-CLI...
|
||||
- Easy to customize any container, with simple edit to the `dockerfile`.
|
||||
- All Images extends from an official base Image. (Trusted base Images).
|
||||
- Pre-configured Nginx for Laravel.
|
||||
- Data container, to keep Data safe and accessible.
|
||||
- Easy to apply configurations inside containers.
|
||||
- Clean and well structured Dockerfiles (`dockerfile`).
|
||||
- Latest version of the Docker Compose file (`docker-compose`).
|
||||
- Everything is visible and editable.
|
||||
- More to come every week..
|
||||
|
||||
|
||||
<a name="Supported-Containers"></a>
|
||||
@ -89,18 +96,18 @@ docker-compose up nginx mysql redis
|
||||
|
||||
- PHP-FPM (7.0 - 5.6 - 5.5)
|
||||
- NGINX
|
||||
- HHVM
|
||||
- MySQL
|
||||
- PostgreSQL
|
||||
- MariaDB
|
||||
- Neo4j
|
||||
- MongoDB
|
||||
- Neo4j
|
||||
- Redis
|
||||
- Memcached
|
||||
- Caddy
|
||||
- Beanstalkd
|
||||
- Beanstalkd Console
|
||||
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano and cURL)
|
||||
- Data *(Databases Data Container)*
|
||||
- Application *(Application Code Container)*
|
||||
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano, cURL and much more)
|
||||
|
||||
|
||||
>If you can't find your container, build it yourself and add it to this list. Contributions are welcomed :)
|
||||
@ -112,7 +119,7 @@ docker-compose up nginx mysql redis
|
||||
<a name="what-is-docker"></a>
|
||||
### What is Docker?
|
||||
|
||||
[Docker](https://www.docker.com) is an open-source project that automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of [operating-system-level virtualization](https://en.wikipedia.org/wiki/Operating-system-level_virtualization) on Linux, Mac OS and Windows.
|
||||
[Docker](https://www.docker.com) is an open-source project that automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of [operating-system-level virtualization](https://en.wikipedia.org/wiki/Operating-system-level_virtualization) on Linux, Mac OS and Windows.
|
||||
|
||||
<a name="what-is-laravel"></a>
|
||||
### What is Laravel?
|
||||
@ -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.
|
||||
|
||||
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).
|
||||
|
||||
@ -139,37 +146,32 @@ 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.
|
||||
|
||||
- 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.
|
||||
<br>Thus **LaraDock is much faster than Homestead**.
|
||||
Running a virtual Container is much faster than running a full virtual Machine. Thus **LaraDock is much faster than Homestead**.
|
||||
|
||||
|
||||
|
||||
<a name="Requirements"></a>
|
||||
## Requirements
|
||||
|
||||
| Linux | Windows & MAC |
|
||||
|-----------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| [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) |
|
||||
| [Docker Engine](https://docs.docker.com/engine/installation/linux/ubuntulinux) | [Docker Toolbox](https://www.docker.com/toolbox) |
|
||||
| [Docker Compose](https://docs.docker.com/compose/install) | |
|
||||
|
||||
|
||||
|
||||
|
||||
| Linux | Windows & MAC |
|
||||
|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
|
||||
| [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) |
|
||||
| [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) | |
|
||||
|
||||
<a name="Demo"></a>
|
||||
## Demo Video
|
||||
|
||||
What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwDA) :)
|
||||
What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwDA) :)
|
||||
|
||||
<a name="Installation"></a>
|
||||
## 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:
|
||||
|
||||
@ -190,7 +192,7 @@ git clone https://github.com/LaraDock/laradock.git
|
||||
## Usage
|
||||
|
||||
|
||||
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.
|
||||
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).
|
||||
|
||||
@ -208,10 +210,10 @@ 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`.
|
||||
`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.
|
||||
|
||||
|
||||
|
||||
@ -223,7 +225,7 @@ You can select your own combination of container form this list:
|
||||
```bash
|
||||
docker exec -it {Workspace-Container-Name} bash
|
||||
```
|
||||
Replace `{Workspace-Container-Name}` with your Workspace container name.
|
||||
Replace `{Workspace-Container-Name}` with your Workspace container name.
|
||||
<br>
|
||||
To find the containers names type `docker-compose ps`.
|
||||
|
||||
@ -259,6 +261,7 @@ If you need a special support. Contact me, more details in the [Help & Questions
|
||||
<a name="Documentation"></a>
|
||||
## 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>
|
||||
@ -306,7 +309,7 @@ docker-compose stop {container-name}
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
*Note: Careful with this command as it will delete your Data Volume Container as well. (if you want to keep your Database data than you should stop each container by itself as follow):*
|
||||
*Note: Careful with this command as it will delete your Data Volume Container as well. (if you want to keep your Database data than you should stop each container by itself as follow):*
|
||||
|
||||
|
||||
|
||||
@ -338,7 +341,7 @@ docker exec -it {container-name} bash
|
||||
### Edit default container configuration
|
||||
Open the `docker-compose.yml` and change anything you want.
|
||||
|
||||
Examples:
|
||||
Examples:
|
||||
|
||||
Change MySQL Database Name:
|
||||
|
||||
@ -365,7 +368,7 @@ Change Redis defaut port to 1111:
|
||||
<a name="Edit-a-Docker-Image"></a>
|
||||
### Edit a Docker Image
|
||||
|
||||
1 - Find the `dockerfile` of the image you want to edit,
|
||||
1 - Find the `dockerfile` of the image you want to edit,
|
||||
<br>
|
||||
example for `mysql` it will be `mysql/Dockerfile`.
|
||||
|
||||
@ -424,7 +427,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:
|
||||
@ -464,7 +467,7 @@ For more about the Laravel installation click [here](https://laravel.com/docs/ma
|
||||
|
||||
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.
|
||||
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:
|
||||
|
||||
@ -518,13 +521,6 @@ Composer update
|
||||
phpunit
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
<a name="Use-Redis"></a>
|
||||
### Use Redis
|
||||
@ -581,14 +577,47 @@ composer require predis/predis:^1.0
|
||||
<a name="Use-Mongo"></a>
|
||||
### 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
|
||||
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
|
||||
'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_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.
|
||||
6 - 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:
|
||||
7 - 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 exec -it laradock_workspace_1 bash`.
|
||||
- Enter the Workspace Container `docker exec -it laradock_workspace_1 bash`.
|
||||
- Migrate the Database `php artisan migrate`.
|
||||
|
||||
|
||||
@ -663,20 +692,18 @@ 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.
|
||||
|
||||
#### A) Switch from PHP `7.0` to PHP `5.6`
|
||||
|
||||
1 - Open the `docker-compose.yml`.
|
||||
|
||||
2 - Search for `Dockerfile-70` in the PHP container section.
|
||||
|
||||
3 - Change the version number.
|
||||
<br>
|
||||
Example to select version 5.6 instead of 7.0 you have to replace `Dockerfile-70` with `Dockerfile-56`.
|
||||
|
||||
Sample:
|
||||
3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-5`, like this:
|
||||
|
||||
```txt
|
||||
php-fpm:
|
||||
@ -685,19 +712,35 @@ php-fpm:
|
||||
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
|
||||
|
||||
```bash
|
||||
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/).
|
||||
|
||||
|
||||
@ -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`
|
||||
|
||||
|
||||
|
||||
@ -768,9 +841,9 @@ 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:**
|
||||
**On Windows & MAC:**
|
||||
|
||||
Run this command in your terminal:
|
||||
|
||||
@ -786,7 +859,7 @@ If your Host name is different then `default`, you have to specify it (`docker-m
|
||||
> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*.
|
||||
|
||||
<br>
|
||||
**On Linux:**
|
||||
**On Linux:**
|
||||
|
||||
Run this command in your terminal:
|
||||
|
||||
@ -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>
|
||||
<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!
|
||||
#### 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
|
||||
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.
|
||||
|
||||
|
||||
|
||||
|
||||
#### I see "Welcome to nginx" instead of the Laravel App!
|
||||
|
||||
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>
|
||||
@ -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>
|
||||
## 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).
|
||||
|
||||
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`).
|
||||
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).
|
||||
|
||||
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
|
||||
|
||||
- [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)
|
||||
**Creator:**
|
||||
|
||||
- [Mahmoud Zalt](https://github.com/Mahmoudz) (Twitter [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt))
|
||||
|
||||
**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
|
||||
|
||||
|
@ -7,9 +7,11 @@ 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 mv /tmp/beanstalk_console-master /source
|
||||
|
||||
RUN apt-get remove --purge -y curl && apt-get autoclean && apt-get clean
|
||||
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
RUN apt-get remove --purge -y curl &&
|
||||
apt-get autoclean &&
|
||||
apt-get clean &&
|
||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
EXPOSE 2080
|
||||
|
||||
CMD bash -c 'BEANSTALK_SERVERS=$BEANSTALKD_PORT_11300_TCP_ADDR:11300 php -S 0.0.0.0:2080 -t /source/public'
|
||||
CMD bash -c 'BEANSTALK_SERVERS=$BEANSTALKD_PORT_11300_TCP_ADDR:11300 php -S 0.0.0.0:2080 -t /source/public'
|
||||
|
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:
|
||||
|
||||
### 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:
|
||||
build:
|
||||
context: ./php-fpm
|
||||
args:
|
||||
- INSTALL_MONGO=false
|
||||
- INSTALL_XDEBUG=false
|
||||
dockerfile: Dockerfile-70
|
||||
volumes_from:
|
||||
- application
|
||||
- volumes_source
|
||||
expose:
|
||||
- "9000"
|
||||
links:
|
||||
- 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:
|
||||
build: ./nginx
|
||||
build:
|
||||
context: ./nginx
|
||||
args:
|
||||
- PHP_UPSTREAM=php-fpm
|
||||
volumes_from:
|
||||
- application
|
||||
- volumes_source
|
||||
volumes:
|
||||
- ./logs/nginx/:/var/log/nginx
|
||||
ports:
|
||||
@ -49,12 +49,23 @@ services:
|
||||
links:
|
||||
- php-fpm
|
||||
|
||||
### HHVM Container ##########################################
|
||||
|
||||
hhvm:
|
||||
build: ./hhvm
|
||||
volumes_from:
|
||||
- volumes_source
|
||||
expose:
|
||||
- "9000"
|
||||
links:
|
||||
- workspace
|
||||
|
||||
### MySQL Container #########################################
|
||||
|
||||
mysql:
|
||||
build: ./mysql
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
@ -68,7 +79,7 @@ services:
|
||||
postgres:
|
||||
build: ./postgres
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
ports:
|
||||
- "5432:5432"
|
||||
environment:
|
||||
@ -81,7 +92,7 @@ services:
|
||||
mariadb:
|
||||
build: ./mariadb
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
ports:
|
||||
- "3306:3306"
|
||||
environment:
|
||||
@ -100,7 +111,7 @@ services:
|
||||
environment:
|
||||
- NEO4J_AUTH=homestead:secret
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
|
||||
### MongoDB Container #######################################
|
||||
|
||||
@ -109,14 +120,14 @@ services:
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
|
||||
### Redis Container #########################################
|
||||
|
||||
redis:
|
||||
build: ./redis
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
ports:
|
||||
- "6379:6379"
|
||||
|
||||
@ -125,7 +136,7 @@ services:
|
||||
memcached:
|
||||
build: ./memcached
|
||||
volumes_from:
|
||||
- data
|
||||
- volumes_data
|
||||
ports:
|
||||
- "11211:11211"
|
||||
links:
|
||||
@ -150,12 +161,39 @@ services:
|
||||
links:
|
||||
- beanstalkd
|
||||
|
||||
### Workspace Utilities Container ###########################
|
||||
### Caddy Server Container ##################################
|
||||
|
||||
workspace:
|
||||
build: ./workspace
|
||||
caddy:
|
||||
build: ./caddy
|
||||
volumes_from:
|
||||
- application
|
||||
tty: true
|
||||
- volumes_source
|
||||
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 ###############################
|
||||
|
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 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
|
||||
|
||||
|
@ -15,6 +15,7 @@ http {
|
||||
tcp_nodelay on;
|
||||
keepalive_timeout 15;
|
||||
types_hash_max_size 2048;
|
||||
client_max_body_size 20M;
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
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
|
||||
|
||||
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.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/*
|
||||
#
|
||||
#--------------------------------------------------------------------------
|
||||
# Software's Installation
|
||||
#--------------------------------------------------------------------------
|
||||
#
|
||||
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
|
||||
#
|
||||
|
||||
# configure gd library
|
||||
RUN docker-php-ext-configure gd \
|
||||
--enable-gd-native-ttf \
|
||||
--with-freetype-dir=/usr/include/freetype2
|
||||
# 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 extensions using the helper script provided by the base image
|
||||
RUN docker-php-ext-install \
|
||||
pdo_mysql \
|
||||
pdo_pgsql \
|
||||
gd
|
||||
# Install the PHP mcrypt extention
|
||||
RUN docker-php-ext-install mcrypt
|
||||
|
||||
# Install Memcached for php 7
|
||||
# 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
|
||||
|
||||
#####################################
|
||||
# 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" \
|
||||
&& mkdir -p /usr/src/php/ext/memcached \
|
||||
&& tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
||||
&& docker-php-ext-configure memcached \
|
||||
&& docker-php-ext-install memcached \
|
||||
&& rm /tmp/memcached.tar.gz
|
||||
&& mkdir -p memcached \
|
||||
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
||||
&& ( \
|
||||
cd memcached \
|
||||
&& 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 pecl install mongodb
|
||||
RUN rm -r /var/lib/apt/lists/*
|
||||
|
||||
RUN usermod -u 1000 www-data
|
||||
|
||||
|
@ -2,3 +2,13 @@ date.timezone=UTC
|
||||
display_errors=Off
|
||||
log_errors=On
|
||||
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
|
||||
|
||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||
@ -11,16 +17,19 @@ ENV LC_CTYPE=UTF-8
|
||||
ENV LANG=en_US.UTF-8
|
||||
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
|
||||
RUN add-apt-repository -y \
|
||||
ppa:ondrej/php
|
||||
RUN apt-get install -y software-properties-common && \
|
||||
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-common \
|
||||
php7.0-curl \
|
||||
@ -35,56 +44,105 @@ RUN apt-get update && apt-get install -y --force-yes \
|
||||
php7.0-zip \
|
||||
php7.0-memcached \
|
||||
php7.0-gd \
|
||||
php7.0-xdebug \
|
||||
pkg-config \
|
||||
php-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libedit-dev \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
xz-utils \
|
||||
sqlite3 \
|
||||
libsqlite3-dev \
|
||||
sqlite3 \
|
||||
git \
|
||||
curl \
|
||||
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)
|
||||
RUN sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini
|
||||
# Install composer and add its bin to the PATH.
|
||||
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.
|
||||
RUN echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc
|
||||
# Add the composer.json
|
||||
ADD ./composer.json /root/.composer/composer.json
|
||||
|
||||
# Install Composer
|
||||
RUN curl -s http://getcomposer.org/installer | php \
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
# Check if global install need to be runned
|
||||
ARG COMPOSER_GLOBAL_INSTALL=true
|
||||
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
|
||||
RUN echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini
|
||||
#####################################
|
||||
# MongoDB:
|
||||
#####################################
|
||||
|
||||
# Install nvm (Node Version Manager)
|
||||
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
|
||||
# Check if Mongo needs to be installed
|
||||
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
|
||||
RUN . ~/.nvm/nvm.sh \
|
||||
&& nvm install stable \
|
||||
&& nvm use stable \
|
||||
&& nvm alias stable \
|
||||
&& npm install -g gulp bower
|
||||
# Check if xDebug needs to be installed
|
||||
ARG INSTALL_XDEBUG=true
|
||||
ENV INSTALL_XDEBUG ${INSTALL_XDEBUG}
|
||||
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
||||
# Load the xdebug extension only with phpunit commands
|
||||
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
|
||||
RUN . ~/.bashrc
|
||||
|
||||
# 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
|
||||
|
||||
|
5
workspace/composer.json
Normal file
5
workspace/composer.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"require": {
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user