Compare commits

...

23 Commits

Author SHA1 Message Date
12051834a3 include screencast tutorial link 2016-04-28 23:40:30 +03:00
e2593ab522 make submodule add optional in the docs 2016-04-22 17:35:11 +03:00
4f9271d565 Merge pull request #29 from chungth/master
use git submodule instead of git clone when install
2016-04-18 14:10:16 +03:00
c447eb86e4 use git submodule instead of git clone 2016-04-18 19:48:29 +09:00
530ffe7433 remove redis restart always from the docker compose file 2016-04-18 12:08:57 +03:00
c8718e3746 update the logos image 2016-04-12 23:30:01 +03:00
feaff6fa72 update the documenation 2016-04-12 16:47:45 +03:00
d98cf4754b simplify the usage steps and create installation steps 2016-04-11 07:50:33 +03:00
b335364591 fix the documentation 2016-04-08 11:47:35 +03:00
105fce8965 simlify and reduce the usage steps 2016-04-08 11:33:33 +03:00
0973aaf166 update the documenation - make redis optional 2016-04-08 00:48:32 +03:00
b5be47fb5e fix a typo in the doc 2016-04-06 08:47:31 +03:00
03e7eb622e update the readme file 2016-04-04 10:19:49 +03:00
d9f10f367c upgrade the readme file
adding the different PHP versions to the docs in addition to general
updates
2016-04-04 10:03:11 +03:00
dac12296c6 upgrade to php 5.6 by default
adding `phpnginx` or `php55nginx` will pull PHP 5.5 while `php56nginx`
will pull PHP 5.6
2016-04-04 10:02:21 +03:00
62ec36d9dd replace the images versions from the latest to the latest stable version (tag).
to avoid any errors while experimenting on the master branch
2016-04-04 05:33:18 +03:00
5bc35214e6 update the readme file≈ 2016-03-11 11:06:31 +02:00
d179226247 update the readme file 2016-03-11 10:11:24 +02:00
97ad0cdcfe update the readme file 2016-03-11 09:40:59 +02:00
bd88b95bb5 Merge pull request #13 from vitr/patch-1
Update README.md (a typo)
2016-03-10 05:32:21 +02:00
8e5aa26b99 Update README.md 2016-03-10 09:35:11 +10:00
45cc9908ad update the documentation design 2016-03-06 07:29:15 +02:00
84e26f046b update the readme file 2016-02-26 13:24:55 +02:00
4 changed files with 294 additions and 108 deletions

10
LICENSE
View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2015 Mahmoud Zalt
Copyright 2016 <Mahmoud Zalt>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -9,13 +9,13 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

373
README.md
View File

@ -1,31 +1,53 @@
# LaraDock
[![forthebadge](http://forthebadge.com/images/badges/built-with-love.svg)](http://www.zalt.me)
LaraDock helps you run your **Laravel** App on **Docker** real quick.
<br>
It's like Laravel Homestead but for Docker instead of Vagrant.
![](http://s18.postimg.org/fhykchl09/new_laradock_cover.png)
<br>
## Contents
- [Intro](#Intro)
- [Supported Software (Docker Images)](#Supported-Software)
- [Requirements](#Requirements)
- [Screencast Tutorial](https://www.youtube.com/watch?v=jGkyO6Is_aI)
- [Installation](#Installation)
- [Usage](#Usage)
- [Documentation](#Documentation)
- [Supported Images](#Supports)
- [List current running Containers](#List-current-running-Containers)
- [Close all running Containers](#Close-all-running-Containers)
- [Delete all existing Containers](#Delete-all-existing-Containers)
- [Use Redis in Laravel](#Use-Redis-in-Laravel)
- [Use custom Domain](Use-custom-Domain)
- [Change the PHP Version](#Change-the-PHP-Version)
- [Add/Remove a Docker Container](#AddRemove-a-Docker-Container)
- [Add Docker Images](#Add-Docker-Images)
- [Edit a Docker Container](#Edit-a-Docker-Container)
- [View the Log files](#View-the-Log-files)
- [Upgrade the Docker Images](#Upgrade-the-Docker-Images)
- [Edit a Docker Image](#Edit-a-Docker-Image)
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
- [Find your Docker IP Address](#Find-Docker-IP-Address)
![](http://s11.postimg.org/uqpl3efab/laradock.jpg)
<a name="Intro"></a>
### What is LaraDock?
**LaraDock** helps you run your **Laravel** App on **Docker** in seconds.
## Intro
LaraDock strives to make the development experience easier.
It contains pre-packaged Docker Images that provides you a wonderful development environment without requiring you to install PHP, NGINX, MySQL, REDIS, and any other software on your local machine.
### 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.
@ -40,10 +62,20 @@ 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.
### Questions?
[![Join the chat at https://gitter.im/LaraDock/laradock](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
<a name="Supported-Software"></a>
## Supported Software (Docker Images)
- PHP 5.6 / NGINX
- PHP 5.5 / NGINX
- MySQL
- Redis
- Data Volume (for MySQL & Redis)
- Beanstalked
The Images links on [Github](https://github.com/LaraDock)
<br>
The Images links on [Docker Hub](https://hub.docker.com/u/laradock/)
<a name="Requirements"></a>
@ -53,99 +85,93 @@ Instead of providing a full Virtual Machines, like you get with Vagrant, Docker
- Git ([Download](https://git-scm.com/downloads))
- Composer ([Download](https://getcomposer.org/download/))
*Note: Git & Composer can be installed on Docker Containers if you don't want to install them on your machine. (But you have to do this yourself for now).*
<a name="Installation"></a>
## Installation
What is better than watching a video tutorial!!
<br>
If you prefer watch this [screencast](https://www.youtube.com/watch?v=jGkyO6Is_aI), for how to install and use this tool.
<br>
1 - Clone the `LaraDock` repository, in any of your `Laravel` projects:
```bash
git clone https://github.com/LaraDock/laradock.git docker
```
Instead of `git clone` you can use `git submodule add` in case you are already using Git for your Laravel project *(Recommended)*:
```bash
git submodule add https://github.com/LaraDock/laradock.git docker
```
>These commands should create a `docker` folder, on the root directory of your Laravel project.
<a name="Usage"></a>
## Usage
1 - First install any version of Laravel, or use any of your existing Laravel projects.
>**(Windows & MAC users)** Make sure you have a running Docker Virtual Host on your machine first.
><br>
>[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
2 - Open your terminal and go to your Laravel project directory.
3 - Create a new folder on the root directory of your Laravel project and name it `docker` then go into it.
```bash
mkdir docker && cd $_
```
3 - Clone the LaraDock repository inside that `docker` folder.
```bash
git clone https://github.com/LaraDock/laradock.git .
```
4 - Find your Docker IP address.
- If you are on Linux OS: your IP Address is `127.0.0.1` because the containers run directly on your localhost.
- If you are on MAC or Windows OS and using the **docker-machine**: start your docker machine then type `docker-machine ip {vm-name-here}`. *(The default IP is 192.168.99.100)*
- If you are on MAC or Windows OS and using **boot2docker**: type `boot2docker ip` when boot2docker is up.
5 - Open your hosts file `/etc/hosts`.
```bash
sudo nano /etc/hosts
```
6 - Map your `Docker IP` to the `laravel.dev` domain, by adding the following to the `hosts` file.
```bash
xxx.xxx.xxx.xxx laravel.dev
```
Don't forget to replace the `xxx.xxx.xxx.xxx` with your Docker IP Address.
7 - Open `docker-compose.yml` file and replace the `xxx.xxx.xxx.xxx` with your Docker IP Adress as well.
8 - Open your Laravel's `.env` file and set the `DB_HOST` and the `REDIS_HOST` to `laravel.dev` instead of the default `127.0.0.1`.
<br>
1 - Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
```env
DB_HOST=laravel.dev
REDIS_HOST=laravel.dev
DB_HOST=xxx.xxx.xxx.xxx
```
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
If you want to use Redis for Caching and/or for Sessions Management, set `CACHE_DRIVER` and `SESSION_DRIVER` to `redis` instead of the default `file`.
```env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
```
9 - Finally run the containers. Make sure you are in the `docker` folder before running this command.
<br>
2 - Run the containers:
<br>
*(Make sure you are in the `docker` folder before running this command)*
```bash
docker-compose up -d
```
*"Note: Only the first time you run this command, it will take up to 7 minutes (depend on your connection speed) to download the images to your local machine.*
>*Only the first time you run this command, it will take up to 5 minutes (depend on your connection speed) to download the Docker Images on your local machine.*
10 - Open your browser and visit `http://laravel.dev`
> Debugging: in case you faced an error here, it might be that you forget to provide some permissions for Laravel, so try running the following command on the Laravel rood directory:
`sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache`
<br>
3 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
> **Debugging**: in case you faced an error here, run this command from the Laravel root directory:
> <br>
> `sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache`
<br>
[Follow @Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
<br>
<a name="Documentation"></a>
## Documentation
#### See current running Containers
<a name="List-current-running-Containers"></a>
#### List current running Containers
```bash
docker ps
```
<br>
<a name="Close-all-running-Containers"></a>
#### Close all running Containers
```bash
docker-compose stop
```
<br>
<a name="Delete-all-existing-Containers"></a>
#### Delete all existing Containers
```bash
docker-compose rm -f
@ -157,17 +183,118 @@ docker-compose rm -f
<br>
<a name="Use-Redis-in-Laravel"></a>
#### Use Redis in Laravel
#### Remove Container
To prevent a container (software) from running, open the `docker-compose.yml` file, and comment out the container section or remove it entirely.
Open your Laravel's `.env` file and set the `REDIS_HOST` to your `Docker-IP` instead of the default `127.0.0.1`.
```env
REDIS_HOST=xxx.xxx.xxx.xxx
```
If you don't find the `REDIS_HOST` variable in your `.env` file. Go to the database config file `config/database.php` and replace the `127.0.0.1` with your `Docker-IP` for Redis like this:
```php
'redis' => [
'cluster' => false,
'default' => [
'host' => 'xxx.xxx.xxx.xxx',
'port' => 6379,
'database' => 0,
],
],
```
To enable Redis Caching and/or for Sessions Management. Also from the `.env` file set `CACHE_DRIVER` and `SESSION_DRIVER` to `redis` instead of the default `file`.
```env
CACHE_DRIVER=redis
SESSION_DRIVER=redis
```
Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer first.
```shell
composer require predis/predis:^1.0
```
#### Add an Image (add a software to run with other Containers)
To add an image (software), just edit the `laradock/docker/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/yml/).
<br>
<a name="Use-custom-Domain"></a>
#### 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`.
1 - Open your `/etc/hosts` file and map your `Docker IP` to the `laravel.dev` domain, by adding the following:
```bash
xxx.xxx.xxx.xxx laravel.dev
```
2 - Open your Laravel's `.env` file and replace the `127.0.0.1` default values with your `{Docker-IP}`.
<br>
Example:
```env
DB_HOST=xxx.xxx.xxx.xxx
```
3 - Open the nginx config file `docker/settings/nginx/default` and add this in the `server`:
```
server_name laravel.dev;
```
4 - Open your browser and visit `{http://laravel.dev}`
#### Edit a Container (change Ports or Volumes)
To modify a container you can simply open the `laradock/docker/docker-compose.yml` and change everything you want.
>In case you faced any problem, try this additional step:
>
>Open the `docker-compose.yml` and add the following to `php-nginx:`
>
>```yaml
> extra_hosts:
> - "laravel.dev:xxx.xxx.xxx.xxx"
>```
<br>
<a name="Change-the-PHP-Version"></a>
#### Change the PHP Version
By default **PHP 5.6** is running.
<br>
To change the default PHP version, simply open your `docker-compose.yml` file and edit this line:
```yaml
image: laradock/php56nginx:latest
```
Supported versions:
- (PHP 5.5.*) laradock/php55nginx:latest
- (PHP 5.6.*) laradock/php56nginx:latest
**Note:** If you use this `laradock/phpnginx` image, it will pull from `laradock/php56nginx`.
<br>
<a name="Add-Docker-Images"></a>
#### Add Docker Images
*(add a software to run with other Containers)*
<br>
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/yml/).
<br>
<a name="Edit-a-Docker-Container"></a>
#### Edit a Docker Container (change Ports or Volumes)
To modify a container you can simply open the `docker-compose.yml` and change everything you want.
Example: if you want to set the MySQL port to 3333, just replace the default port with yours:
@ -176,41 +303,103 @@ Example: if you want to set the MySQL port to 3333, just replace the default por
- "3333:3306"
```
#### Edit an existing Image (change some configuration in the image)
To edit an image, and take full control of it:
1. clone the LaraDock `docker-images` repository [https://github.com/LaraDock/docker-images](https://github.com/LaraDock/images)
2. modify whichever `Dockfile` you want
3. from the modified image directory run `docker build -t {your-image-name} .`
All the images are open source and hosted on the [Docker Hub](https://hub.docker.com/u/laradock/).
*If you find any bug or you have and suggestion that can improve the performance of any image, please consider contributing. Thanks in advance.*
<br>
<a name="View-the-Log-files"></a>
#### View the Log files
The Log files are stored in the `docker/logs` directory.
<a name="Supports"></a>
## Highlights
__Currently Supported Docker Images:__
<br>
<a name="Upgrade-the-Docker-Images"></a>
#### Upgrade the Docker Images
- [NGINX+PHP](https://hub.docker.com/r/laradock/phpnginx/)
- [MySQL](https://hub.docker.com/r/laradock/mysql/)
- [Redis](https://hub.docker.com/r/laradock/redis/)
- [Beanstalked](https://hub.docker.com/r/laradock/beanstalkd/)
- [Data Volume](https://hub.docker.com/r/laradock/data/) (for MySQL & Redis)
By default `docker-compose.yml` is configured to use the latest stable version of the image (latest stable realease `tag`).
To use the latest build you can edit the `docker-compose.yml` file and replace the version number at the end of every image name with `:latest`
<br>
Example: change `image: laradock/mysql:0.1.0` to `image: laradock/mysql:latest`
<br>
<a name="AddRemove-a-Docker-Container"></a>
#### Add/Remove a Docker Container
To prevent a container (software) from running, open the `docker-compose.yml` file, and comment out the container section or remove it entirely.
<br>
<a name="Edit-a-Docker-Image"></a>
#### Edit a Docker Image (change some configuration in the image)
To edit an image, and take full control of it:
1. Clone any Image from [https://github.com/LaraDock](https://github.com/LaraDock)
2. Modify the `Dockfile`
3. Run `docker build -t {your-image-name} .`
All the images are open source and hosted on the [Docker Hub](https://hub.docker.com/u/laradock/).
*If you find any bug or you have and suggestion that can improve the performance of any image, please consider contributing. Thanks in advance.*
<br>
<a name="Run-Docker-Virtual-Host"></a>
#### Run a Docker Virtual Host
These steps are only for **Windows & MAC** users *(Linux users don't need a virtual host)*:
1 - Run the default Host:
```bash
docker-machine start default
```
* If the host "default" does not exist, create one using the command below, else skip it:
* ```bash
docker-machine create -d virtualbox default
```
2 - Run this command to configure your shell:
```bash
eval $(docker-machine env)
```
<br>
<a name="Find-Docker-IP-Address"></a>
#### Find your Docker IP Address
**On Windows & MAC:**
```bash
docker-machine ip default
```
*(The default IP is 192.168.99.100)*
**On Linux:**
Your IP Address is `127.0.0.1`
> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*.
<br>
## Contributing
This little project was built by one man who has a full time job and many responsibilities, so if you like this project and you find that it needs a bug fix or support for new software or upgrade for the current containers, or anything else.. Do not hesitate to contribute, you are more than welcome :)
All Docker Images can be found at [https://github.com/LaraDock](https://github.com/LaraDock)
## Support
@ -218,6 +407,11 @@ This little project was built by one man who has a full time job and many respon
#### Questions?
[![Join the chat at https://gitter.im/LaraDock/laradock](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## Credits
[![Mahmoud Zalt](https://img.shields.io/badge/Author-Mahmoud%20Zalt-orange.svg)](http://www.zalt.me)
@ -227,3 +421,4 @@ This little project was built by one man who has a full time job and many respon
## License
[MIT License (MIT)](https://github.com/laradock/laradock/blob/master/LICENSE)
[]([]())

View File

@ -1,10 +1,6 @@
###########################################################
# MAINTAINER: Mahmoud Zalt <mahmoud@zalt.me> #
###########################################################
# PHP + NGINX Container #----------------------------------
php-nginx:
image: laradock/phpnginx:latest
image: laradock/php56nginx:0.1.0
container_name: php-nginx
ports:
- "80:80"
@ -16,12 +12,10 @@ php-nginx:
- mysql
- redis
privileged: true
extra_hosts:
- "laravel.dev:xxx.xxx.xxx.xxx"
# MySQL Container #----------------------------------------
mysql:
image: laradock/mysql:latest
image: laradock/mysql:0.1.0
container_name: mysql
ports:
- "3306:3306"
@ -35,7 +29,7 @@ mysql:
# Redis Container #----------------------------------------
redis:
image: laradock/redis:latest
image: laradock/redis:0.1.0
container_name: redis
ports:
- "6379:6379"
@ -43,12 +37,11 @@ redis:
- data
volumes:
- ./logs/redis:/var/log/redis
restart: always
privileged: true
# Data Volume Container #----------------------------------
data:
image: laradock/data:latest
image: laradock/data:0.1.0
container_name: data
volumes:
- /var/lib/mysql
@ -56,7 +49,7 @@ data:
# Beanstalkd Container #-----------------------------------
# beanstalkd:
# image: laradock/beanstalkd:latest
# image: laradock/beanstalkd:0.1.0
# container_name: beanstalkd
# ports:
# - "11300:11300"

View File

@ -5,8 +5,6 @@ server {
root /var/www/public;
index index.php index.html index.htm;
server_name laravel.dev;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}