Compare commits

..

11 Commits

Author SHA1 Message Date
588819ab6d turn errors and access logs on by default for nginx 2016-05-20 20:32:33 +03:00
170b63a3ba edit redis volume 2016-05-20 09:26:29 +03:00
19813e48c3 add demo video to the readme 2016-05-20 09:24:26 +03:00
be7b8ee056 update the readme (installation steps) 2016-05-19 21:40:25 +03:00
01a056dd25 make the workspace container run automatically 2016-05-19 20:49:16 +03:00
70e1b0fe41 update readme file 2016-05-19 18:04:53 +03:00
0959b25c05 add sqlite support to the readme 2016-05-19 03:42:36 +03:00
1d8336a9e1 add cleaning to free some space during provisioning the workspace
Fixing E: You don't have enough free space in /var/cache/apt/archives/
2016-05-19 03:25:02 +03:00
f0e2d83618 add sqlite in the workspace
it could be removed to it’s own container later
2016-05-19 03:06:34 +03:00
7f1deb0342 update how to get IP address on Linux, in the readme 2016-05-19 02:49:07 +03:00
703887a2a6 add Node, Gulp and Bower to the readme 2016-05-18 22:54:46 +03:00
5 changed files with 171 additions and 104 deletions

221
README.md
View File

@ -21,6 +21,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [What is Laravel](#what-is-laravel)
- [Why Docker not Vagrant](#why-docker-not-vagrant)
- [LaraDock VS Homestead](#laradock-vs-homestead)
- [Demo Video](#Demo)
- [Requirements](#Requirements)
- [Installation](#Installation)
- [Usage](#Usage)
@ -36,6 +37,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [Add more Software's (Docker Images)](#Add-Docker-Images)
- [View the Log files](#View-the-Log-files)
- [Laravel](#Laravel):
- [Install Laravel from a Docker Container](#Install-Laravel)
- [Run Artisan Commands](#Run-Artisan-Commands)
- [Use Redis](#Use-Redis)
- [PHP](#PHP)
@ -46,7 +48,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
- [Find your Docker IP Address](#Find-Docker-IP-Address)
- [Use custom Domain](#Use-custom-Domain)
- [Help & Questions](#Help)
@ -57,10 +59,10 @@ 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.
**Usage Overview:** Run `NGINX` and `MySQL`.
**Usage Overview:** Run `NGINX`, `MySQL` and `Redis`.
```shell
docker-compose up nginx mysql
docker-compose up nginx mysql redis
```
<a name="features"></a>
@ -92,8 +94,8 @@ docker-compose up nginx mysql
- Memcached
- Beanstalkd
- Beanstalkd Console
- Workspace (includes: Composer, PHP7-CLI, Laravel Installer, Git, Vim, Nano and cURL)
- Data Volume *(Databases Data Container)*
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano and cURL)
- Data *(Databases Data Container)*
- Application *(Application Code Container)*
@ -151,102 +153,92 @@ Running a virtual Container is much faster than running a full virtual Machine.
| [Docker Compose](https://docs.docker.com/compose/install) | |
<a name="Demo"></a>
## Demo Video
What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwDA) :)
<a name="Installation"></a>
## Installation
#### A - In existing Laravel Projects:
1 - Clone the `LaraDock` repository, inside your `Laravel` project root direcotry:
1 - Clone the `LaraDock` repository.
**A)** If you already have a Laravel project, clone this repository on your `Laravel` root direcotry:
```bash
git submodule add https://github.com/LaraDock/laradock.git
```
>If you are not already using Git for your Laravel project, you can use `git clone` instead of `git submodule`.
2 - That's it, jump to the Usage section now.
*If you are not already using Git for your Laravel project, you can use `git clone` instead of `git submodule`.*
<br>
#### B - From scratch (Install LaraDock and Laravel):
*If you don't have any Laravel project yet, and you want to start your Laravel project with Docker.*
1 - Clone the `LaraDock` repository anywhere on your machine:
**B)** If you don't have a Laravel project, and you want to install Laravel from Docker, clone this repo anywhere on your machine:
```bash
git clone https://github.com/LaraDock/laradock.git
```
2 - Go to the Uage section below and do the steps 1 and 3 then come back here.
3 - Enter the Workspace container. (assuming you have the Workspace container running):
```bash
docker exec -it {Workspace-Container-Name} bash
```
Replace `{Workspace-Container-Name}` with your Workspace container name. To get the name type `docker-compose ps` and copy it.
4 - Install Laravel anyway you like.
Example using the Laravel Installer:
```bash
laravel new my-cool-app
```
For more about this check out this [link](https://laravel.com/docs/master#installing-laravel).
5 - 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.
Since the new Laravel application is in the `my-cool-app` folder, we should replace `../:/var/www/laravel` with `../my-cool-app/:/var/www/laravel`, as follow:
```yaml
application:
build: ./application
volumes:
- ../my-cool-app/:/var/www/laravel
```
6 - finally go to the Usage section below again and do steps 2 and 4.
<a name="Usage"></a>
## Usage
1 - For **Windows & MAC** users only: 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.
(**Linux** users don't need a Virtual Host, so skip this step).
<br>
[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
<br>
2 - Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
2 - Run the Containers, (you can select the containers that you wish to run)
<br>
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
**Example:** Running NGINX and MySQL:
```bash
docker-compose up -d nginx mysql
```
*Note: the PHP-FPM, Workspace, Application and Data Containers will automatically run.*
Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`, `data`, `php-fpm`, `application`.
<br>
3 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, ...).
```bash
docker exec -it {Workspace-Container-Name} bash
```
Replace `{Workspace-Container-Name}` with your Workspace container name.
<br>
To find the containers names type `docker-compose ps`.
<br>
4 - Edit the Laravel configurations.
If you don't have a Laravel project installed yet, see [How to Install Laravel in a Docker Container](#Install-Laravel).
Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
```env
DB_HOST=xxx.xxx.xxx.xxx
```
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
<br>
3 - Run the Containers, (you can select the software's (containers) that you wish to run)
<br>
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
**Example:** Running NGINX, MySQL, Redis and the Workspace:
```bash
docker-compose up -d nginx mysql redis workspace
```
*Note: the PHP-FPM, Application and Data Containers will automatically run.*
Supported Containers: `workspace`, `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `memcached`, `beanstalkd`, `beanstalkd-console`, `data`, `php-fpm`, `application`.
<br>
4 - 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>
@ -257,11 +249,7 @@ sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache
```
<br>
[Follow @Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
If you have any problem, or need a special support. Feel free to contact me, more details in the [Help & Questions](#Help) secion.
<br>
@ -453,6 +441,48 @@ docker logs {container-name}
<a name="Install-Laravel"></a>
## Install Laravel from a Docker Container
1 - First you need to enter the Workspace Container.
2 - Install Laravel anyway you like.
Example using the Laravel Installer:
```bash
laravel new my-cool-app
```
Example using Composer
```bash
composer create-project laravel/laravel my-cool-app "5.1.*"
```
For more about this check out this [link](https://laravel.com/docs/master#installing-laravel).
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.
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:
```yaml
application:
build: ./application
volumes:
- ../my-cool-app/:/var/www/laravel
```
4 - Go to that folder and start working..
```bash
cd my-cool-app
```
<a name="Run-Artisan-Commands"></a>
#### Run Artisan Commands
@ -691,14 +721,31 @@ eval $(docker-machine env)
```bash
docker-machine ip default
```
If your Host name is different then `default`, you have to specify it (`docker-machine ip my-host`).
*(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>
**On Linux:**
1 - Run `ifconfig` in the 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
docker0 Link encap:Ethernet HWaddr 02:42:41:2d:c4:24
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.
@ -747,27 +794,33 @@ server_name laravel.dev;
<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)
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
[Issues](https://github.com/laradock/laradock/issues) on Github.
To suggest a features or report a bug, open a new [Issue](https://github.com/laradock/laradock/issues).
### Questions?
If you have any question, send me a direct message on LaraChat, my username is `mahmoud_zalt`.
<a name="Help"></a>
## Help & Questions
If you need help with anything related to this project, shedule a live call with me on [Codementor](https://www.codementor.io/mahmoudz), I'd love to help.
If you 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`.
## Credits
[![Mahmoud Zalt](https://img.shields.io/badge/Author-Mahmoud%20Zalt-orange.svg)](http://www.zalt.me)
Twitter: [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
<br>
Website: [http://zalt.me](http://zalt.me)
<br>
Email: `mahmoud@zalt.me`
## License
[MIT License (MIT)](https://github.com/laradock/laradock/blob/master/LICENSE)
[]([]())
[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE) (MIT)

View File

@ -12,6 +12,8 @@ services:
- application
expose:
- "9000"
links:
- workspace
### Laravel Application Code Container ######################

View File

@ -17,8 +17,8 @@ http {
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log off;
access_log on;
error_log on;
gzip on;
gzip_disable "msie6";
include /etc/nginx/conf.d/*.conf;

View File

@ -4,6 +4,8 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
#COPY redis.conf /usr/local/etc/redis/redis.conf
VOLUME /var/lib/redis
CMD [ "redis-server" ]
EXPOSE 6379

View File

@ -11,14 +11,16 @@ ENV LC_CTYPE=UTF-8
ENV LANG=en_US.UTF-8
ENV TERM xterm
# Install "software-properties-common" (for add-apt-repository) and add the "PHP 7" ppa
RUN apt-get update \
&& apt-get install -y software-properties-common \
&& add-apt-repository -y ppa:ondrej/php
# Install "software-properties-common" (for the "add-apt-repository")
RUN apt-get update && apt-get install -y \
software-properties-common
# Install PHP-CLI 7 and some useful Tools
RUN apt-get update \
&& apt-get install -y \
# Add the "PHP 7" ppa
RUN add-apt-repository -y \
ppa:ondrej/php
# Install PHP-CLI 7, some PHP extentions and some useful Tools with APT
RUN apt-get update && apt-get install -y \
php7.0-cli \
php7.0-common \
php7.0-curl \
@ -27,7 +29,11 @@ RUN apt-get update \
php7.0-mbstring \
php7.0-mcrypt \
php7.0-mysql \
php7.0-sqlite \
php7.0-sqlite3 \
php7.0-zip \
sqlite3 \
libsqlite3-dev \
git \
curl \
vim \
@ -36,6 +42,20 @@ RUN apt-get update \
nodejs-dev \
npm
# Clean up, to free some space
RUN apt-get clean
# Install gulp and bower with NPM
RUN npm install -g \
gulp \
bower
# Add a symbolic link for Node
RUN ln -s /usr/bin/nodejs /usr/bin/node
# Add an alias for PHPUnit
RUN echo "alias phpunit='./vendor/bin/phpunit'" >> ~/.bashrc
# Install Composer
RUN curl -s http://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/ \
@ -45,20 +65,10 @@ RUN curl -s http://getcomposer.org/installer | php \
RUN composer.phar global require "laravel/installer" \
&& echo "export PATH='~/.composer/vendor/bin:$PATH'" >> ~/.bashrc
# Install gulp and bower
RUN npm install -g gulp bower
# Add a symbolic link
RUN ln -s /usr/bin/nodejs /usr/bin/node
# Add an alias for PHPUnit
RUN echo "alias phpunit='./vendor/bin/phpunit'" >> ~/.bashrc
# Source the bash
RUN . ~/.bashrc
# Clean up
RUN apt-get autoclean && 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