Compare commits
26 Commits
Author | SHA1 | Date | |
---|---|---|---|
68aca9f8f9 | |||
6d0ecaecf4 | |||
a434588a66 | |||
5aa01b1757 | |||
3b2831bf1d | |||
7171996843 | |||
66f08a4f60 | |||
07a07ab3ac | |||
fb4fcdcb23 | |||
a69681b07c | |||
2c05c87400 | |||
16a1041ef5 | |||
5ef193d55b | |||
4d8a798224 | |||
1574231a80 | |||
6eb3a9bd5f | |||
377f24fe2b | |||
51b6d4f844 | |||
97500508f5 | |||
7dcf481d21 | |||
efd062fd88 | |||
504c9c59d5 | |||
4edf941872 | |||
36b49f5ae2 | |||
e49836ba90 | |||
84f766363d |
133
README.md
133
README.md
@ -52,10 +52,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`, `MySQL` and `Redis`.
|
||||
**Usage Overview:** Run `NGINX` and `MySQL`.
|
||||
|
||||
```shell
|
||||
docker-compose up -d nginx mysql redis
|
||||
docker-compose up nginx mysql
|
||||
```
|
||||
|
||||
<a name="features"></a>
|
||||
@ -64,7 +64,7 @@ docker-compose up -d nginx mysql redis
|
||||
- Easy switch between PHP versions: 7.0 - 5.6 - 5.5 ...
|
||||
- Choose your favorite database engine: MySQL - Postgres - Redis ...
|
||||
- Run your own combination of software's: Memcached - MariaDB ...
|
||||
- Every software runs on a separate container: PHP - NGINX ...
|
||||
- Every software runs on a separate container: PHP-FPM - NGINX ...
|
||||
- Easy to customize any container, with simple edit to the `dockerfile`.
|
||||
- All Images extends from an official base Image. (Trusted base Images).
|
||||
- Pre-configured Nginx for Laravel.
|
||||
@ -78,7 +78,7 @@ docker-compose up -d nginx mysql redis
|
||||
<a name="Supported-Containers"></a>
|
||||
## Supported Containers
|
||||
|
||||
- PHP (7.0 - 5.6 - 5.5)
|
||||
- PHP-FPM (7.0 - 5.6 - 5.5)
|
||||
- NGINX
|
||||
- MySQL
|
||||
- PostgreSQL
|
||||
@ -87,9 +87,12 @@ docker-compose up -d nginx mysql redis
|
||||
- Memcached
|
||||
- Beanstalkd
|
||||
- Beanstalkd Console
|
||||
- Data Volume
|
||||
- Workspace (includes: Composer, PHP7-CLI, Laravel Installer, Git, Vim, Nano and cURL)
|
||||
- Data Volume *(Databases Data Container)*
|
||||
- Application *(Application Code Container)*
|
||||
|
||||
>Cannot find your container! we would love to have it as well. Consider contributing your container and adding it to this list.
|
||||
|
||||
>If you can't find your container, build it yourself and add it to this list. Contributions are welcomed :)
|
||||
|
||||
|
||||
|
||||
@ -139,26 +142,67 @@ Running a virtual Container is much faster than running a full virtual Machine.
|
||||
|-----------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||
| [Laravel](https://laravel.com/docs/master/installation) | [Laravel](https://laravel.com/docs/master/installation) |
|
||||
| [Git](https://git-scm.com/downloads) | [Git](https://git-scm.com/downloads) |
|
||||
| [Docker Engine](https://docs.docker.com/engine/installation/linux/ubuntulinux/#install) | [Docker Toolbox](https://www.docker.com/toolbox) |
|
||||
| [Docker Engine](https://docs.docker.com/engine/installation/linux/ubuntulinux) | [Docker Toolbox](https://www.docker.com/toolbox) |
|
||||
| [Docker Compose](https://docs.docker.com/compose/install) | |
|
||||
|
||||
|
||||
<a name="Installation"></a>
|
||||
## Installation
|
||||
|
||||
1 - Clone the `LaraDock` repository, in any of your `Laravel` projects:
|
||||
#### A - In existing Laravel Projects:
|
||||
|
||||
1 - Clone the `LaraDock` repository, inside your `Laravel` project root direcotry:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/LaraDock/laradock.git docker
|
||||
git submodule add https://github.com/LaraDock/laradock.git
|
||||
```
|
||||
|
||||
You can use `git submodule add` instead of `git clone` if you are already using Git for your Laravel project *(Recommended)*:
|
||||
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`.*
|
||||
|
||||
|
||||
#### 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:
|
||||
|
||||
```bash
|
||||
git submodule add https://github.com/LaraDock/laradock.git docker
|
||||
git clone https://github.com/LaraDock/laradock.git
|
||||
```
|
||||
|
||||
>These commands should create a `docker` folder, on the root directory of your Laravel project.
|
||||
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.
|
||||
|
||||
|
||||
|
||||
@ -166,14 +210,14 @@ git submodule add https://github.com/LaraDock/laradock.git docker
|
||||
<a name="Usage"></a>
|
||||
## Usage
|
||||
|
||||
0 - For **Windows & MAC** users only: make sure you have a running Docker Virtual Host on your machine.
|
||||
1 - For **Windows & MAC** users only: 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>
|
||||
1 - Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
|
||||
2 - Open your Laravel's `.env` file and set the `DB_HOST` to your `{Docker-IP}`:
|
||||
|
||||
```env
|
||||
DB_HOST=xxx.xxx.xxx.xxx
|
||||
@ -181,28 +225,22 @@ DB_HOST=xxx.xxx.xxx.xxx
|
||||
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
|
||||
|
||||
<br>
|
||||
2 - Run the Containers, (you can select the software's (containers) that you wish to run)
|
||||
3 - Run the Containers, (you can select the software's (containers) that you wish to run)
|
||||
<br>
|
||||
*Make sure you are in the `docker` folder before running the `docker-compose` command.*
|
||||
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
|
||||
|
||||
> Running PHP, NGINX, MySQL and Redis:
|
||||
**Example:** Running NGINX, MySQL, Redis and the Workspace:
|
||||
|
||||
```bash
|
||||
docker-compose up -d php nginx mysql redis
|
||||
docker-compose up -d nginx mysql redis workspace
|
||||
```
|
||||
*Note: the PHP-FPM, Application and Data Containers will automatically run.*
|
||||
|
||||
Note: you can choose your own combination of software's (containers), another example:
|
||||
|
||||
> Running PHP, NGINX, Postgres and Memcached:
|
||||
|
||||
```bash
|
||||
docker-compose up -d php nginx postgres memcached
|
||||
```
|
||||
|
||||
Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `memcached`, `beanstalkd`, `beanstalkd-console`, `data`, `php`.
|
||||
Supported Containers: `workspace`, `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `memcached`, `beanstalkd`, `beanstalkd-console`, `data`, `php-fpm`, `application`.
|
||||
|
||||
<br>
|
||||
3 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
|
||||
4 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
|
||||
|
||||
|
||||
<br>
|
||||
@ -229,6 +267,12 @@ sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache
|
||||
```bash
|
||||
docker ps
|
||||
```
|
||||
You can also use the this command if you want to see only this project containers:
|
||||
|
||||
```bash
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
|
||||
<br>
|
||||
<a name="Close-all-running-Containers"></a>
|
||||
@ -249,7 +293,7 @@ docker-compose stop {container-name}
|
||||
<a name="Delete-all-existing-Containers"></a>
|
||||
#### Delete all existing Containers
|
||||
```bash
|
||||
docker-compose rm -f
|
||||
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):*
|
||||
@ -284,26 +328,26 @@ To change the default PHP version:
|
||||
|
||||
1 - Open the `docker-compose.yml`.
|
||||
|
||||
2 - Search for `Dockerfile-php-70` in the PHP container section.
|
||||
2 - Search for `Dockerfile-70` in the PHP container section.
|
||||
|
||||
3 - Change the version number.
|
||||
<br>
|
||||
Example to select version 5.6 instead of 7.0 you have to replace `Dockerfile-php-70` with `Dockerfile-php-56`.
|
||||
Example to select version 5.6 instead of 7.0 you have to replace `Dockerfile-70` with `Dockerfile-56`.
|
||||
|
||||
Sample:
|
||||
|
||||
```txt
|
||||
php:
|
||||
php-fpm:
|
||||
build:
|
||||
context: ./php
|
||||
dockerfile: Dockerfile-php-70
|
||||
context: ./php-fpm
|
||||
dockerfile: Dockerfile-70
|
||||
```
|
||||
|
||||
Supported Versions:
|
||||
|
||||
- For (PHP 7.0.*) use `Dockerfile-php-70`
|
||||
- For (PHP 5.6.*) use `Dockerfile-php-56`
|
||||
- For (PHP 5.5.*) use `Dockerfile-php-55`
|
||||
- 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
|
||||
@ -312,7 +356,7 @@ Supported Versions:
|
||||
docker-compose build php
|
||||
```
|
||||
|
||||
For more details 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/).
|
||||
|
||||
|
||||
<br>
|
||||
@ -372,7 +416,7 @@ DB_HOST=xxx.xxx.xxx.xxx
|
||||
|
||||
Optionally you can define the server name in the nginx config file, like this:
|
||||
|
||||
```
|
||||
```conf
|
||||
server_name laravel.dev;
|
||||
```
|
||||
|
||||
@ -382,7 +426,14 @@ server_name laravel.dev;
|
||||
<br>
|
||||
<a name="View-the-Log-files"></a>
|
||||
#### View the Log files
|
||||
The Log files are stored in the `docker/logs` 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:
|
||||
|
||||
```bash
|
||||
docker logs {container-name}
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
@ -445,7 +496,7 @@ composer require predis/predis:^1.0
|
||||
2 - enter any container using:
|
||||
|
||||
```bash
|
||||
docker exec -it {container-name-or-id} bash
|
||||
docker exec -it {container-name} bash
|
||||
```
|
||||
3 - to exit a container, type `exit`.
|
||||
|
||||
@ -551,4 +602,4 @@ If you have any question, send me a direct message on LaraChat, my username is `
|
||||
## License
|
||||
|
||||
[MIT License (MIT)](https://github.com/laradock/laradock/blob/master/LICENSE)
|
||||
[]([]())
|
||||
[]([]())
|
||||
|
7
application/Dockerfile
Normal file
7
application/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
||||
FROM debian:jessie
|
||||
|
||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||
|
||||
WORKDIR /var/www/laravel
|
||||
|
||||
CMD ["true"]
|
@ -2,32 +2,25 @@ version: '2'
|
||||
|
||||
services:
|
||||
|
||||
### Nginx Server Container ##################################
|
||||
### PHP-FPM Container #######################################
|
||||
|
||||
nginx:
|
||||
build: ./nginx
|
||||
volumes_from:
|
||||
- php
|
||||
volumes:
|
||||
- ./logs/nginx/:/var/log/nginx
|
||||
ports:
|
||||
- "80:80"
|
||||
links:
|
||||
- php
|
||||
|
||||
### PHP Container ###########################################
|
||||
|
||||
php:
|
||||
php-fpm:
|
||||
build:
|
||||
context: ./php
|
||||
dockerfile: Dockerfile-php-70
|
||||
volumes:
|
||||
- ../:/var/www/laravel
|
||||
- ./logs/php/:/usr/local/var/log
|
||||
context: ./php-fpm
|
||||
dockerfile: Dockerfile-70
|
||||
volumes_from:
|
||||
- application
|
||||
expose:
|
||||
- "9000"
|
||||
|
||||
### DATA Container ##########################################
|
||||
### Laravel Application Code Container ######################
|
||||
|
||||
application:
|
||||
build: ./application
|
||||
volumes:
|
||||
- ../:/var/www/laravel
|
||||
|
||||
### Databases Data Container ################################
|
||||
|
||||
data:
|
||||
build: ./data
|
||||
@ -38,6 +31,20 @@ services:
|
||||
- /var/lib/redis
|
||||
- /var/lib/memcached
|
||||
|
||||
### Nginx Server Container ##################################
|
||||
|
||||
nginx:
|
||||
build: ./nginx
|
||||
volumes_from:
|
||||
- application
|
||||
volumes:
|
||||
- ./logs/nginx/:/var/log/nginx
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
links:
|
||||
- php-fpm
|
||||
|
||||
### MySQL Container #########################################
|
||||
|
||||
mysql:
|
||||
@ -52,7 +59,7 @@ services:
|
||||
MYSQL_PASSWORD: secret
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
links:
|
||||
- php
|
||||
- php-fpm
|
||||
|
||||
### PostgreSQL Container ####################################
|
||||
|
||||
@ -67,7 +74,7 @@ services:
|
||||
POSTGRES_USER: homestead
|
||||
POSTGRES_PASSWORD: secret
|
||||
links:
|
||||
- php
|
||||
- php-fpm
|
||||
|
||||
### MariaDB Container #######################################
|
||||
|
||||
@ -83,7 +90,7 @@ services:
|
||||
MYSQL_PASSWORD: secret
|
||||
MYSQL_ROOT_PASSWORD: root
|
||||
links:
|
||||
- php
|
||||
- php-fpm
|
||||
|
||||
### Redis Container #########################################
|
||||
|
||||
@ -94,7 +101,7 @@ services:
|
||||
ports:
|
||||
- "6379:6379"
|
||||
links:
|
||||
- php
|
||||
- php-fpm
|
||||
|
||||
### Memcached Container #####################################
|
||||
|
||||
@ -105,7 +112,7 @@ services:
|
||||
ports:
|
||||
- "11211:11211"
|
||||
links:
|
||||
- php
|
||||
- php-fpm
|
||||
|
||||
### Beanstalkd Container ####################################
|
||||
|
||||
@ -115,9 +122,9 @@ services:
|
||||
- "11300:11300"
|
||||
privileged: true
|
||||
links:
|
||||
- php
|
||||
- php-fpm
|
||||
|
||||
### Beanstalkd-Console Container ############################
|
||||
### Beanstalkd Console Container ############################
|
||||
|
||||
beanstalkd-console:
|
||||
build: ./beanstalkd-console
|
||||
@ -126,4 +133,12 @@ services:
|
||||
links:
|
||||
- beanstalkd
|
||||
|
||||
### Workspace Utilities Container ###########################
|
||||
|
||||
workspace:
|
||||
build: ./workspace
|
||||
volumes_from:
|
||||
- application
|
||||
tty: true
|
||||
|
||||
### Add more Containers below ###############################
|
||||
|
@ -5,7 +5,7 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||
ADD nginx.conf /etc/nginx/
|
||||
ADD laravel.conf /etc/nginx/sites-available/
|
||||
|
||||
RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf
|
||||
RUN echo "upstream php-upstream { server php-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf
|
||||
|
||||
RUN usermod -u 1000 www-data
|
||||
|
||||
|
@ -5,8 +5,8 @@ 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 \
|
||||
libpq-dev -y \
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpq-dev \
|
||||
libmemcached-dev \
|
||||
curl
|
||||
|
@ -5,8 +5,8 @@ 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 \
|
||||
libpq-dev -y \
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpq-dev \
|
||||
libmemcached-dev \
|
||||
curl
|
||||
|
@ -5,10 +5,10 @@ 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 \
|
||||
libpq-dev -y \
|
||||
curl \
|
||||
libmemcached-dev
|
||||
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 \
|
55
workspace/Dockerfile
Normal file
55
workspace/Dockerfile
Normal file
@ -0,0 +1,55 @@
|
||||
FROM phusion/baseimage:latest
|
||||
|
||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||
|
||||
RUN DEBIAN_FRONTEND=noninteractive
|
||||
RUN locale-gen en_US.UTF-8
|
||||
|
||||
ENV LANGUAGE=en_US.UTF-8
|
||||
ENV LC_ALL=en_US.UTF-8
|
||||
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 PHP-CLI 7 and some useful Tools
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y \
|
||||
php7.0-cli \
|
||||
php7.0-common \
|
||||
php7.0-curl \
|
||||
php7.0-json \
|
||||
php7.0-xml \
|
||||
php7.0-mbstring \
|
||||
php7.0-mcrypt \
|
||||
php7.0-mysql \
|
||||
php7.0-zip \
|
||||
git \
|
||||
curl \
|
||||
vim \
|
||||
nano
|
||||
|
||||
# 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" \
|
||||
&& echo "export PATH='~/.composer/vendor/bin:$PATH'" >> ~/.bashrc
|
||||
|
||||
# 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/*
|
||||
|
||||
WORKDIR /var/www/laravel
|
Reference in New Issue
Block a user