Compare commits
118 Commits
Author | SHA1 | Date | |
---|---|---|---|
b1ec5b8d6f | |||
6e07061deb | |||
97057f259c | |||
e4f6cec536 | |||
e6cf30e7ba | |||
ed8e241007 | |||
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 | |||
ca413edff4 | |||
f6d1d6f617 | |||
117382a050 | |||
2e930df2a7 | |||
4922c5fafd | |||
198c38f6cd | |||
8d216f83d5 | |||
05c5fcf216 | |||
fccee522c6 | |||
f3eb6a5fc4 | |||
685c34d12d | |||
ceba1af3ae | |||
c4100b5052 | |||
1148a3d051 | |||
bec1a32550 | |||
72cde8a8ea | |||
4f9cdb02c6 | |||
1673a80daf | |||
f130381cfe | |||
eda286ded2 | |||
a8b4b61e28 | |||
124a3553e6 | |||
3ff4aaca79 | |||
4c06a03ead | |||
1cb131ba36 | |||
99b54c5f7d | |||
8993cccc2c | |||
1090bb4db6 | |||
9c7054abe2 | |||
e7decdaaf7 | |||
18bf12bfde | |||
d829482a06 | |||
86c6389650 | |||
991e28046d | |||
ccbc73c6bc | |||
246c7366ba | |||
762e2ec07b | |||
adaaa25f47 | |||
11a13a0c33 | |||
c642560993 | |||
ea9f5c635f | |||
fd4253afb6 | |||
73310e45e8 | |||
7f91fc9798 | |||
a8a7685a40 | |||
06c4c19a6f |
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
|
475
README.md
475
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
|
||||||
@ -40,14 +43,20 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
|||||||
- [Install Laravel from a Docker Container](#Install-Laravel)
|
- [Install Laravel from a Docker Container](#Install-Laravel)
|
||||||
- [Run Artisan Commands](#Run-Artisan-Commands)
|
- [Run Artisan Commands](#Run-Artisan-Commands)
|
||||||
- [Use Redis](#Use-Redis)
|
- [Use Redis](#Use-Redis)
|
||||||
|
- [Use Mongo](#Use-Mongo)
|
||||||
- [PHP](#PHP)
|
- [PHP](#PHP)
|
||||||
- [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)
|
||||||
- [Help & Questions](#Help)
|
- [Help & Questions](#Help)
|
||||||
|
|
||||||
|
|
||||||
@ -68,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>
|
||||||
@ -87,17 +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
|
||||||
|
- MongoDB
|
||||||
- Neo4j
|
- 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 :)
|
||||||
@ -109,7 +119,7 @@ docker-compose up nginx mysql redis
|
|||||||
<a name="what-is-docker"></a>
|
<a name="what-is-docker"></a>
|
||||||
### What is Docker?
|
### 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>
|
<a name="what-is-laravel"></a>
|
||||||
### What is Laravel?
|
### What is Laravel?
|
||||||
@ -124,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).
|
||||||
|
|
||||||
@ -136,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.
|
- 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**.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Requirements"></a>
|
<a name="Requirements"></a>
|
||||||
## 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
|
||||||
|
|
||||||
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>
|
<a name="Installation"></a>
|
||||||
## 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:
|
||||||
|
|
||||||
@ -187,16 +192,15 @@ git clone https://github.com/LaraDock/laradock.git
|
|||||||
## Usage
|
## 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).
|
(**Linux** users don't need a Virtual Host, so skip this step).
|
||||||
|
|
||||||
[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
2 - Run the Containers, (you can select the containers that you wish to run)
|
2 - Run some Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).*
|
||||||
<br>
|
|
||||||
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
|
|
||||||
|
|
||||||
**Example:** Running NGINX and MySQL:
|
**Example:** Running NGINX and MySQL:
|
||||||
|
|
||||||
@ -204,10 +208,14 @@ git clone https://github.com/LaraDock/laradock.git
|
|||||||
docker-compose up -d nginx mysql
|
docker-compose up -d nginx mysql
|
||||||
```
|
```
|
||||||
|
|
||||||
*Note: the PHP-FPM, Workspace, Application and Data Containers will automatically run.*
|
You can select your own combination of container form this list:
|
||||||
|
|
||||||
|
`nginx`, `hhvm` ,`mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `memcached`, `beanstalkd`, `beanstalkd-console`, `caddy`, `workspace`, `php-fpm`.
|
||||||
|
|
||||||
|
|
||||||
|
**Note**: `workspace` and `php-fpm` will run automatically in most of the cases, so no need to specify them in the `up` command.
|
||||||
|
|
||||||
|
|
||||||
Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`, `data`, `php-fpm`, `application`.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -217,7 +225,7 @@ Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`,
|
|||||||
```bash
|
```bash
|
||||||
docker exec -it {Workspace-Container-Name} 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>
|
<br>
|
||||||
To find the containers names type `docker-compose ps`.
|
To find the containers names type `docker-compose ps`.
|
||||||
|
|
||||||
@ -242,30 +250,27 @@ DB_HOST=xxx.xxx.xxx.xxx
|
|||||||
5 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
|
5 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
|
||||||
|
|
||||||
|
|
||||||
<br>
|
|
||||||
**Debugging**: in case you faced an error here, run this command from the Laravel root directory:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
If you have any problem, or need a special support. Feel free to contact me, more details in the [Help & Questions](#Help) secion.
|
**Debugging**: if you are facing any problem here check the [Debugging](#debugging) section.
|
||||||
|
|
||||||
|
If you need a special support. Contact me, more details in the [Help & Questions](#Help) section.
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<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>
|
||||||
### Docker
|
### [Docker]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="List-current-running-Containers"></a>
|
<a name="List-current-running-Containers"></a>
|
||||||
#### List current running Containers
|
### List current running Containers
|
||||||
```bash
|
```bash
|
||||||
docker ps
|
docker ps
|
||||||
```
|
```
|
||||||
@ -281,7 +286,7 @@ docker-compose ps
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Close-all-running-Containers"></a>
|
<a name="Close-all-running-Containers"></a>
|
||||||
#### Close all running Containers
|
### Close all running Containers
|
||||||
```bash
|
```bash
|
||||||
docker-compose stop
|
docker-compose stop
|
||||||
```
|
```
|
||||||
@ -299,12 +304,12 @@ docker-compose stop {container-name}
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Delete-all-existing-Containers"></a>
|
<a name="Delete-all-existing-Containers"></a>
|
||||||
#### Delete all existing Containers
|
### Delete all existing Containers
|
||||||
```bash
|
```bash
|
||||||
docker-compose down
|
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):*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -314,7 +319,7 @@ docker-compose down
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Enter-Container"></a>
|
<a name="Enter-Container"></a>
|
||||||
#### Enter a Container (SSH into a running Container)
|
### Enter a Container (SSH into a running Container)
|
||||||
|
|
||||||
1 - first list the current running containers with `docker ps`
|
1 - first list the current running containers with `docker ps`
|
||||||
|
|
||||||
@ -333,10 +338,10 @@ docker exec -it {container-name} bash
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Edit-Container"></a>
|
<a name="Edit-Container"></a>
|
||||||
#### Edit default container configuration
|
### Edit default container configuration
|
||||||
Open the `docker-compose.yml` and change anything you want.
|
Open the `docker-compose.yml` and change anything you want.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
Change MySQL Database Name:
|
Change MySQL Database Name:
|
||||||
|
|
||||||
@ -361,9 +366,9 @@ Change Redis defaut port to 1111:
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Edit-a-Docker-Image"></a>
|
<a name="Edit-a-Docker-Image"></a>
|
||||||
#### Edit a Docker Image
|
### Edit a Docker Image
|
||||||
|
|
||||||
1 - Find the `dockerfile` of the image you want to edit,
|
1 - Find the `dockerfile` of the image you want to edit,
|
||||||
<br>
|
<br>
|
||||||
example for `mysql` it will be `mysql/Dockerfile`.
|
example for `mysql` it will be `mysql/Dockerfile`.
|
||||||
|
|
||||||
@ -388,7 +393,7 @@ docker-compose build mysql
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Build-Re-build-Containers"></a>
|
<a name="Build-Re-build-Containers"></a>
|
||||||
#### Build/Re-build Containers
|
### Build/Re-build Containers
|
||||||
|
|
||||||
If you do any change to any `dockerfile` make sure you run this command, for the changes to take effect:
|
If you do any change to any `dockerfile` make sure you run this command, for the changes to take effect:
|
||||||
|
|
||||||
@ -408,7 +413,7 @@ docker-compose build {container-name}
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Add-Docker-Images"></a>
|
<a name="Add-Docker-Images"></a>
|
||||||
#### Add more Software's (Docker Images)
|
### Add more Software's (Docker Images)
|
||||||
|
|
||||||
To add an image (software), just edit the `docker-compose.yml` and add your container details, to do so you need to be familiar with the [docker compose file syntax](https://docs.docker.com/compose/compose-file/).
|
To add an image (software), just edit the `docker-compose.yml` and add your container details, to do so you need to be familiar with the [docker compose file syntax](https://docs.docker.com/compose/compose-file/).
|
||||||
|
|
||||||
@ -422,7 +427,7 @@ To add an image (software), just edit the `docker-compose.yml` and add your cont
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="View-the-Log-files"></a>
|
<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.
|
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:
|
However to view the logs of all the other containers (MySQL, PHP-FPM,...) you can run this:
|
||||||
@ -437,36 +442,32 @@ docker logs {container-name}
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Laravel"></a>
|
<a name="Laravel"></a>
|
||||||
### Laravel
|
### [Laravel]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Install-Laravel"></a>
|
<a name="Install-Laravel"></a>
|
||||||
## Install Laravel from a Docker Container
|
### Install Laravel from a Docker Container
|
||||||
|
|
||||||
1 - First you need to enter the Workspace Container.
|
1 - First you need to enter the Workspace Container.
|
||||||
|
|
||||||
2 - Install Laravel anyway you like.
|
2 - Install Laravel.
|
||||||
|
|
||||||
Example using the Laravel Installer:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
laravel new my-cool-app
|
|
||||||
```
|
|
||||||
|
|
||||||
Example using Composer
|
Example using Composer
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer create-project laravel/laravel my-cool-app "5.1.*"
|
composer create-project laravel/laravel my-cool-app "5.2.*"
|
||||||
```
|
```
|
||||||
|
|
||||||
For more about this check out this [link](https://laravel.com/docs/master#installing-laravel).
|
> We recommand using `composer create-project` instead of the Laravel installer, to install Laravel.
|
||||||
|
|
||||||
|
For more about the Laravel installation click [here](https://laravel.com/docs/master#installing-laravel).
|
||||||
|
|
||||||
|
|
||||||
3 - Edit `docker-compose.yml` to Map the new application path:
|
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:
|
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:
|
||||||
|
|
||||||
@ -484,8 +485,9 @@ cd my-cool-app
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
<a name="Run-Artisan-Commands"></a>
|
<a name="Run-Artisan-Commands"></a>
|
||||||
#### Run Artisan Commands
|
### Run Artisan Commands
|
||||||
|
|
||||||
You can run artisan commands and many other Terminal commands from the Workspace container.
|
You can run artisan commands and many other Terminal commands from the Workspace container.
|
||||||
|
|
||||||
@ -518,22 +520,16 @@ Composer update
|
|||||||
```bash
|
```bash
|
||||||
phpunit
|
phpunit
|
||||||
```
|
```
|
||||||
```bash
|
|
||||||
laravel new blog
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Use-Redis"></a>
|
<a name="Use-Redis"></a>
|
||||||
#### Use Redis
|
### Use Redis
|
||||||
|
|
||||||
1 - First make sure you run the Redis Container with the `docker-compose` command.
|
1 - First make sure you run the Redis Container (`redis`) with the `docker-compose up` command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up -d redis
|
||||||
|
```
|
||||||
|
|
||||||
2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to your `Docker-IP` instead of the default `127.0.0.1` IP.
|
2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to your `Docker-IP` instead of the default `127.0.0.1` IP.
|
||||||
|
|
||||||
@ -561,7 +557,7 @@ CACHE_DRIVER=redis
|
|||||||
SESSION_DRIVER=redis
|
SESSION_DRIVER=redis
|
||||||
```
|
```
|
||||||
|
|
||||||
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer first.
|
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require predis/predis:^1.0
|
composer require predis/predis:^1.0
|
||||||
@ -577,6 +573,92 @@ composer require predis/predis:^1.0
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Use-Mongo"></a>
|
||||||
|
### Use Mongo
|
||||||
|
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
4 - Add the MongoDB configurations to the `config/database.php` config file:
|
||||||
|
|
||||||
|
```php
|
||||||
|
'connections' => [
|
||||||
|
|
||||||
|
'mongodb' => [
|
||||||
|
'driver' => 'mongodb',
|
||||||
|
'host' => env('DB_HOST', 'localhost'),
|
||||||
|
'port' => env('DB_PORT', 27017),
|
||||||
|
'database' => env('DB_DATABASE', 'database'),
|
||||||
|
'username' => '',
|
||||||
|
'password' => '',
|
||||||
|
'options' => [
|
||||||
|
'database' => '',
|
||||||
|
]
|
||||||
|
],
|
||||||
|
|
||||||
|
// ...
|
||||||
|
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
|
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 Container `docker exec -it laradock_workspace_1 bash`.
|
||||||
|
- Migrate the Database `php artisan migrate`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -584,7 +666,7 @@ composer require predis/predis:^1.0
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="PHP"></a>
|
<a name="PHP"></a>
|
||||||
### PHP
|
### [PHP]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -592,7 +674,7 @@ composer require predis/predis:^1.0
|
|||||||
|
|
||||||
|
|
||||||
<a name="Install-PHP-Extensions"></a>
|
<a name="Install-PHP-Extensions"></a>
|
||||||
#### Install PHP Extensions
|
### Install PHP Extensions
|
||||||
|
|
||||||
Before installing PHP extensions, you have to decide whether you need for the `FPM` or `CLI` because each lives on a different container, if you need it for both you have to edit both containers.
|
Before installing PHP extensions, you have to decide whether you need for the `FPM` or `CLI` because each lives on a different container, if you need it for both you have to edit both containers.
|
||||||
|
|
||||||
@ -610,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:
|
||||||
@ -632,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/).
|
||||||
|
|
||||||
|
|
||||||
@ -657,7 +753,7 @@ For more details about the PHP base image, visit the [official PHP docker images
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Change-the-PHP-CLI-Version"></a>
|
<a name="Change-the-PHP-CLI-Version"></a>
|
||||||
#### Change the PHP-CLI Version
|
### Change the PHP-CLI Version
|
||||||
By default **PHP-CLI 7.0** is running.
|
By default **PHP-CLI 7.0** is running.
|
||||||
|
|
||||||
>Note: it's not very essential to edit the PHP-CLI verion. The PHP-CLI is only used for the Artisan Commands & Composer. It doesn't serve your Application code, this is the PHP-FPM job.
|
>Note: it's not very essential to edit the PHP-CLI verion. The PHP-CLI is only used for the Artisan Commands & Composer. It doesn't serve your Application code, this is the PHP-FPM job.
|
||||||
@ -669,23 +765,53 @@ 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`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Misc"></a>
|
<a name="Misc"></a>
|
||||||
### Misc
|
### [Misc]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Run-Docker-Virtual-Host"></a>
|
<a name="Run-Docker-Virtual-Host"></a>
|
||||||
#### Run a Docker Virtual Host
|
### Run a Docker Virtual Host
|
||||||
|
|
||||||
These steps are only for **Windows & MAC** users *(Linux users don't need a virtual host)*:
|
These steps are only for **Windows & MAC** users *(Linux users don't need a virtual host)*:
|
||||||
|
|
||||||
@ -715,9 +841,11 @@ eval $(docker-machine env)
|
|||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Find-Docker-IP-Address"></a>
|
<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:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-machine ip default
|
docker-machine ip default
|
||||||
@ -726,36 +854,26 @@ If your Host name is different then `default`, you have to specify it (`docker-m
|
|||||||
|
|
||||||
*(The default IP is 192.168.99.100)*
|
*(The default IP is 192.168.99.100)*
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*.
|
> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*.
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
**On Linux:**
|
**On Linux:**
|
||||||
|
|
||||||
1 - Run `ifconfig` in the terminal.
|
Run this command in your terminal:
|
||||||
|
|
||||||
2 - In the result search for `docker0`, your IP address will be next to `inet addr`.
|
|
||||||
|
|
||||||
Example: (In this example your IP address is `172.17.0.1`).
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker0 Link encap:Ethernet HWaddr 02:42:41:2d:c4:24
|
ifconfig docker0 | grep 'inet' | cut -d: -f2 | awk '{ print $1}' | head -n1
|
||||||
inet addr:172.17.0.1 Bcast:0.0.0.0 Mask:255.255.0.0
|
|
||||||
UP BROADCAST MULTICAST MTU:1500 Metric:1
|
|
||||||
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
|
|
||||||
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
|
|
||||||
collisions:0 txqueuelen:0
|
|
||||||
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
|
|
||||||
```
|
```
|
||||||
>If you have an easier way to do it, share it with us.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*(The default IP is 172.17.0.1)*
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Use-custom-Domain"></a>
|
<a name="Use-custom-Domain"></a>
|
||||||
#### Use custom Domain (instead of the Docker IP)
|
### Use custom Domain (instead of the Docker IP)
|
||||||
|
|
||||||
Assuming your custom domain is `laravel.dev` and your current `Docker-IP` is `xxx.xxx.xxx.xxx`.
|
Assuming your custom domain is `laravel.dev` and your current `Docker-IP` is `xxx.xxx.xxx.xxx`.
|
||||||
|
|
||||||
@ -785,11 +903,98 @@ 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!
|
||||||
|
|
||||||
|
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` (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>
|
||||||
@ -797,29 +1002,37 @@ server_name laravel.dev;
|
|||||||
|
|
||||||
This little project was built by one man who has a full time job and many responsibilities, so if you like this project and you find that it needs a bug fix or support for new software or upgrade any container, or anything else.. Do not hesitate to contribute, you are more than welcome :)
|
This little project was built by one man who has a full time job and many responsibilities, so if you like this project and you find that it needs a bug fix or support for new software or upgrade any container, or anything else.. Do not hesitate to contribute, you are more than welcome :)
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
To suggest a features or report a bug, open a new [Issue](https://github.com/laradock/laradock/issues).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Help"></a>
|
<a name="Help"></a>
|
||||||
## Help & Questions
|
## Help & Questions
|
||||||
|
|
||||||
If you need help with anything related to this project, shedule a live call with me on [Codementor](https://www.codementor.io/mahmoudz), I'd love to help.
|
Join the chat room on [Gitter](https://gitter.im/LaraDock/laradock) and get help and support from the community.
|
||||||
|
|
||||||
If you have a short question, send me a direct message on LaraChat, my username is `mahmoud_zalt`. Or send me an email on `mahmoud@zalt.me`.
|
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
|
## Credits
|
||||||
|
|
||||||
[](http://www.zalt.me)
|
**Creator:**
|
||||||
|
|
||||||
Twitter: [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
|
- [Mahmoud Zalt](https://github.com/Mahmoudz) (Twitter [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt))
|
||||||
<br>
|
|
||||||
Website: [http://zalt.me](http://zalt.me)
|
**Main Contributors:**
|
||||||
<br>
|
|
||||||
Email: `mahmoud@zalt.me`
|
- [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,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 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
|
||||||
|
|
||||||
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'
|
||||||
|
17
caddy/Caddyfile
Normal file
17
caddy/Caddyfile
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
# Docs: https://caddyserver.com/docs/caddyfile
|
||||||
|
0.0.0.0:80
|
||||||
|
root /var/www/laravel/public
|
||||||
|
fastcgi / php-fpm:9000 php {
|
||||||
|
index index.php
|
||||||
|
}
|
||||||
|
rewrite {
|
||||||
|
r .*
|
||||||
|
ext /
|
||||||
|
to /index.php?{query}
|
||||||
|
}
|
||||||
|
browse
|
||||||
|
log stdout
|
||||||
|
errors stderr
|
||||||
|
# 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,44 +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/postgres
|
|
||||||
- /var/lib/mariadb
|
|
||||||
- /var/lib/redis
|
|
||||||
- /var/lib/memcached
|
|
||||||
- /var/lib/neo4j
|
|
||||||
|
|
||||||
### 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:
|
||||||
@ -48,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:
|
||||||
@ -61,30 +73,26 @@ services:
|
|||||||
MYSQL_USER: homestead
|
MYSQL_USER: homestead
|
||||||
MYSQL_PASSWORD: secret
|
MYSQL_PASSWORD: secret
|
||||||
MYSQL_ROOT_PASSWORD: root
|
MYSQL_ROOT_PASSWORD: root
|
||||||
links:
|
|
||||||
- php-fpm
|
|
||||||
|
|
||||||
### PostgreSQL Container ####################################
|
### PostgreSQL Container ####################################
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
build: ./postgres
|
build: ./postgres
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_DB: homestead
|
POSTGRES_DB: homestead
|
||||||
POSTGRES_USER: homestead
|
POSTGRES_USER: homestead
|
||||||
POSTGRES_PASSWORD: secret
|
POSTGRES_PASSWORD: secret
|
||||||
links:
|
|
||||||
- php-fpm
|
|
||||||
|
|
||||||
### MariaDB Container #######################################
|
### MariaDB Container #######################################
|
||||||
|
|
||||||
mariadb:
|
mariadb:
|
||||||
build: ./mariadb
|
build: ./mariadb
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "3306:3306"
|
- "3306:3306"
|
||||||
environment:
|
environment:
|
||||||
@ -92,8 +100,6 @@ services:
|
|||||||
MYSQL_USER: homestead
|
MYSQL_USER: homestead
|
||||||
MYSQL_PASSWORD: secret
|
MYSQL_PASSWORD: secret
|
||||||
MYSQL_ROOT_PASSWORD: root
|
MYSQL_ROOT_PASSWORD: root
|
||||||
links:
|
|
||||||
- php-fpm
|
|
||||||
|
|
||||||
### Neo4j Container #########################################
|
### Neo4j Container #########################################
|
||||||
|
|
||||||
@ -101,29 +107,36 @@ services:
|
|||||||
build: ./neo4j
|
build: ./neo4j
|
||||||
ports:
|
ports:
|
||||||
- "7474:7474"
|
- "7474:7474"
|
||||||
- "7687:7687"
|
- "1337:1337"
|
||||||
|
environment:
|
||||||
|
- NEO4J_AUTH=homestead:secret
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
links:
|
|
||||||
- php-fpm
|
### MongoDB Container #######################################
|
||||||
|
|
||||||
|
mongo:
|
||||||
|
build: ./mongo
|
||||||
|
ports:
|
||||||
|
- "27017:27017"
|
||||||
|
volumes_from:
|
||||||
|
- 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"
|
||||||
links:
|
|
||||||
- php-fpm
|
|
||||||
|
|
||||||
### Memcached Container #####################################
|
### Memcached Container #####################################
|
||||||
|
|
||||||
memcached:
|
memcached:
|
||||||
build: ./memcached
|
build: ./memcached
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- volumes_data
|
||||||
ports:
|
ports:
|
||||||
- "11211:11211"
|
- "11211:11211"
|
||||||
links:
|
links:
|
||||||
@ -148,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
|
12
mongo/Dockerfile
Normal file
12
mongo/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
FROM mongo:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
#COPY mongo.conf /usr/local/etc/mongo/mongo.conf
|
||||||
|
|
||||||
|
VOLUME /data/db /data/configdb
|
||||||
|
|
||||||
|
CMD ["mongod"]
|
||||||
|
|
||||||
|
EXPOSE 27017
|
||||||
|
|
@ -1,9 +1,7 @@
|
|||||||
FROM neo4j:3.0
|
FROM tpires/neo4j
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
VOLUME /var/lib/neo4j
|
VOLUME /var/lib/neo4j/data
|
||||||
|
|
||||||
EXPOSE 7474 7687
|
EXPOSE 7474 1337
|
||||||
|
|
||||||
CMD ["neo4j"]
|
|
||||||
|
@ -1,13 +1,18 @@
|
|||||||
FROM nginx:latest
|
FROM nginx:alpine
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
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/conf.d/laravel.conf
|
||||||
|
|
||||||
RUN echo "upstream php-upstream { server php-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf
|
ARG PHP_UPSTREAM=php-fpm
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN apk update \
|
||||||
|
&& apk upgrade \
|
||||||
|
&& apk add --no-cache bash \
|
||||||
|
&& adduser -D -H -u 1000 -s /bin/bash www-data \
|
||||||
|
&& rm /etc/nginx/conf.d/default.conf \
|
||||||
|
&& echo "upstream php-upstream { server ${PHP_UPSTREAM}:9000; }" > /etc/nginx/conf.d/upstream.conf
|
||||||
|
|
||||||
CMD ["nginx"]
|
CMD ["nginx"]
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
user www-data;
|
user www-data;
|
||||||
worker_processes 4;
|
worker_processes 4;
|
||||||
pid /run/nginx.pid;
|
pid /run/nginx.pid;
|
||||||
|
daemon off;
|
||||||
|
|
||||||
events {
|
events {
|
||||||
worker_connections 2048;
|
worker_connections 2048;
|
||||||
@ -15,15 +16,13 @@ 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 /var/log/nginx/access.log;
|
||||||
error_log on;
|
error_log /var/log/nginx/error.log;
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_disable "msie6";
|
gzip_disable "msie6";
|
||||||
include /etc/nginx/conf.d/*.conf;
|
include /etc/nginx/conf.d/*.conf;
|
||||||
include /etc/nginx/sites-available/*;
|
|
||||||
open_file_cache max=100;
|
open_file_cache max=100;
|
||||||
}
|
}
|
||||||
|
|
||||||
daemon off;
|
|
||||||
|
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,28 +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
|
|
||||||
|
|
||||||
# Install extensions using the helper script provided by the base image
|
|
||||||
RUN docker-php-ext-install \
|
|
||||||
pdo_mysql \
|
|
||||||
pdo_pgsql
|
|
||||||
|
|
||||||
#Install memcached
|
|
||||||
RUN pecl install memcached \
|
|
||||||
&& docker-php-ext-enable memcached
|
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
|
||||||
|
|
||||||
WORKDIR /var/www/laravel
|
|
||||||
|
|
||||||
CMD ["php-fpm"]
|
|
||||||
|
|
||||||
EXPOSE 9000
|
|
@ -1,28 +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
|
|
||||||
|
|
||||||
# Install extensions using the helper script provided by the base image
|
|
||||||
RUN docker-php-ext-install \
|
|
||||||
pdo_mysql \
|
|
||||||
pdo_pgsql
|
|
||||||
|
|
||||||
#Install memcached
|
|
||||||
RUN pecl install memcached \
|
|
||||||
&& docker-php-ext-enable memcached
|
|
||||||
|
|
||||||
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,23 +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
|
||||||
curl
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
|
||||||
|
#
|
||||||
|
|
||||||
# Install extensions using the helper script provided by the base image
|
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
|
||||||
RUN docker-php-ext-install \
|
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
|
||||||
pdo_mysql \
|
RUN apt-get update && \
|
||||||
pdo_pgsql
|
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 Memcached for php 7
|
# 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
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
# Final Touch
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
|
||||||
|
RUN rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
@ -1,3 +1,14 @@
|
|||||||
date.timezone = UTC
|
date.timezone=UTC
|
||||||
display_errors = Off
|
display_errors=Off
|
||||||
log_errors = On
|
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
|
||||||
|
@ -4,8 +4,8 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
|||||||
|
|
||||||
#COPY redis.conf /usr/local/etc/redis/redis.conf
|
#COPY redis.conf /usr/local/etc/redis/redis.conf
|
||||||
|
|
||||||
VOLUME /var/lib/redis
|
VOLUME /data
|
||||||
|
|
||||||
CMD [ "redis-server" ]
|
|
||||||
|
|
||||||
EXPOSE 6379
|
EXPOSE 6379
|
||||||
|
|
||||||
|
CMD ["redis-server"]
|
||||||
|
@ -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 \
|
#--------------------------------------------------------------------------
|
||||||
|
# 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 \
|
||||||
@ -29,46 +38,111 @@ RUN apt-get update && apt-get install -y \
|
|||||||
php7.0-mbstring \
|
php7.0-mbstring \
|
||||||
php7.0-mcrypt \
|
php7.0-mcrypt \
|
||||||
php7.0-mysql \
|
php7.0-mysql \
|
||||||
|
php7.0-pgsql \
|
||||||
php7.0-sqlite \
|
php7.0-sqlite \
|
||||||
php7.0-sqlite3 \
|
php7.0-sqlite3 \
|
||||||
php7.0-zip \
|
php7.0-zip \
|
||||||
sqlite3 \
|
php7.0-memcached \
|
||||||
|
php7.0-gd \
|
||||||
|
pkg-config \
|
||||||
|
php-dev \
|
||||||
|
libcurl4-openssl-dev \
|
||||||
|
libedit-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
xz-utils \
|
||||||
libsqlite3-dev \
|
libsqlite3-dev \
|
||||||
|
sqlite3 \
|
||||||
git \
|
git \
|
||||||
curl \
|
curl \
|
||||||
vim \
|
vim \
|
||||||
nano \
|
nano \
|
||||||
nodejs \
|
&& apt-get clean
|
||||||
nodejs-dev \
|
|
||||||
npm
|
|
||||||
|
|
||||||
# Clean up, to free some space
|
#####################################
|
||||||
RUN apt-get clean
|
# Composer:
|
||||||
|
#####################################
|
||||||
|
|
||||||
# Install gulp and bower with NPM
|
# Install composer and add its bin to the PATH.
|
||||||
RUN npm install -g \
|
RUN curl -s http://getcomposer.org/installer | php && \
|
||||||
gulp \
|
echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc && \
|
||||||
bower
|
mv composer.phar /usr/local/bin/composer
|
||||||
|
|
||||||
# Add a symbolic link for Node
|
# Add the composer.json
|
||||||
RUN ln -s /usr/bin/nodejs /usr/bin/node
|
ADD ./composer.json /root/.composer/composer.json
|
||||||
|
|
||||||
# Add an alias for PHPUnit
|
# Check if global install need to be runned
|
||||||
RUN echo "alias phpunit='./vendor/bin/phpunit'" >> ~/.bashrc
|
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
|
||||||
|
|
||||||
# Install Composer
|
|
||||||
RUN curl -s http://getcomposer.org/installer | php \
|
|
||||||
&& mv composer.phar /usr/local/bin/ \
|
|
||||||
&& echo "alias composer='/usr/local/bin/composer.phar'" >> ~/.bashrc
|
|
||||||
|
|
||||||
# Install the Laravel Installer
|
#####################################
|
||||||
RUN composer.phar global require "laravel/installer" \
|
# MongoDB:
|
||||||
&& echo "export PATH='~/.composer/vendor/bin:$PATH'" >> ~/.bashrc
|
#####################################
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# xDebug:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# 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
|
# 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