Compare commits
60 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 | |||
03c991c89d | |||
fdba7e7c09 | |||
405067d4af | |||
7f4e411d3d | |||
e946573d75 | |||
470873acd2 | |||
88d5dd7806 | |||
295a0974da | |||
cf89670671 | |||
40899bc40f | |||
64bf3222af | |||
79009cc97e | |||
571bf64eb2 | |||
75b1705820 | |||
12587bc712 | |||
81f2602464 | |||
ecefee4d65 | |||
de8cbb0605 | |||
5190da831a | |||
fdaa983e77 | |||
e52f8f5613 | |||
f9c13090c6 | |||
bfa0d54b5a | |||
7f80888fc1 | |||
aa338d534e | |||
31793a3cc9 | |||
5d84c6481f | |||
26229e150d | |||
ab7f3d8fd9 | |||
2b98b0b82e | |||
457c5d4b1b | |||
cd97ac0aa6 | |||
22f11e03ee | |||
5d62ec1e67 |
419
README.md
419
README.md
@ -1,6 +1,6 @@
|
|||||||
# LaraDock
|
# LaraDock
|
||||||
|
|
||||||
[](http://www.zalt.me)
|
[](http://zalt.me)
|
||||||
|
|
||||||
|
|
||||||
LaraDock helps you run your **Laravel** App on **Docker** real quick.
|
LaraDock helps you run your **Laravel** App on **Docker** real quick.
|
||||||
@ -15,7 +15,12 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
|||||||
|
|
||||||
|
|
||||||
- [Intro](#Intro)
|
- [Intro](#Intro)
|
||||||
- [Default Containers](#Default-Containers)
|
- [Features](#features)
|
||||||
|
- [What is Docker](#what-is-docker)
|
||||||
|
- [What is Laravel](#what-is-laravel)
|
||||||
|
- [Why Docker not Vagrant](#why-docker-not-vagrant)
|
||||||
|
- [LaraDock VS Homestead](#laradock-vs-homestead)
|
||||||
|
- [Supported Containers](#Supported-Containers)
|
||||||
- [Requirements](#Requirements)
|
- [Requirements](#Requirements)
|
||||||
- [Installation](#Installation)
|
- [Installation](#Installation)
|
||||||
- [Usage](#Usage)
|
- [Usage](#Usage)
|
||||||
@ -24,13 +29,13 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
|||||||
- [Close all running Containers](#Close-all-running-Containers)
|
- [Close all running Containers](#Close-all-running-Containers)
|
||||||
- [Delete all existing Containers](#Delete-all-existing-Containers)
|
- [Delete all existing Containers](#Delete-all-existing-Containers)
|
||||||
- [Build/Re-build Containers](#Build-Re-build-Containers)
|
- [Build/Re-build Containers](#Build-Re-build-Containers)
|
||||||
- [Use Redis in Laravel](#Use-Redis-in-Laravel)
|
|
||||||
- [Use custom Domain](Use-custom-Domain)
|
|
||||||
- [Change the PHP Version](#Change-the-PHP-Version)
|
- [Change the PHP Version](#Change-the-PHP-Version)
|
||||||
- [Add/Remove a Docker Container](#AddRemove-a-Docker-Container)
|
- [Add/Remove a Docker Container](#AddRemove-a-Docker-Container)
|
||||||
- [Add more Software's (Docker Images)](#Add-Docker-Images)
|
- [Add more Software's (Docker Images)](#Add-Docker-Images)
|
||||||
- [Edit a Docker Container](#Edit-a-Docker-Container)
|
- [Edit default container configuration](#Edit-Container)
|
||||||
|
- [Use custom Domain](Use-custom-Domain)
|
||||||
- [View the Log files](#View-the-Log-files)
|
- [View the Log files](#View-the-Log-files)
|
||||||
|
- [Use Redis](#Use-Redis)
|
||||||
- [Enter a Container (SSH into a running Container)](#Enter-Container)
|
- [Enter a Container (SSH into a running Container)](#Enter-Container)
|
||||||
- [Edit a Docker Image](#Edit-a-Docker-Image)
|
- [Edit a Docker Image](#Edit-a-Docker-Image)
|
||||||
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
|
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
|
||||||
@ -47,66 +52,172 @@ 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.
|
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`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker-compose up nginx mysql
|
||||||
|
```
|
||||||
|
|
||||||
|
<a name="features"></a>
|
||||||
|
### Features
|
||||||
|
|
||||||
|
- Easy switch between PHP versions: 7.0 - 5.6 - 5.5 ...
|
||||||
|
- Choose your favorite database engine: MySQL - Postgres - Redis ...
|
||||||
|
- Run your own combination of software's: Memcached - MariaDB ...
|
||||||
|
- Every software runs on a separate container: PHP-FPM - NGINX ...
|
||||||
|
- Easy to customize any container, with simple edit to the `dockerfile`.
|
||||||
|
- All Images extends from an official base Image. (Trusted base Images).
|
||||||
|
- Pre-configured Nginx for Laravel.
|
||||||
|
- Data container, to keep Data safe and accessible.
|
||||||
|
- Easy to apply configurations inside containers.
|
||||||
|
- Clean and well structured Dockerfiles (`dockerfile`).
|
||||||
|
- Latest version of the Docker Compose file (`docker-compose`).
|
||||||
|
- Everything is visible and editable.
|
||||||
|
|
||||||
|
|
||||||
|
<a name="Supported-Containers"></a>
|
||||||
|
## Supported Containers
|
||||||
|
|
||||||
|
- PHP-FPM (7.0 - 5.6 - 5.5)
|
||||||
|
- NGINX
|
||||||
|
- MySQL
|
||||||
|
- PostgreSQL
|
||||||
|
- MariaDB
|
||||||
|
- Redis
|
||||||
|
- Memcached
|
||||||
|
- Beanstalkd
|
||||||
|
- Beanstalkd Console
|
||||||
|
- Workspace (includes: Composer, PHP7-CLI, Laravel Installer, Git, Vim, Nano and cURL)
|
||||||
|
- Data Volume *(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 :)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<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>
|
||||||
### What is Laravel?
|
### What is Laravel?
|
||||||
|
|
||||||
Seriously!!!
|
Seriously!!!
|
||||||
|
|
||||||
|
|
||||||
|
<a name="why-docker-not-vagrant"></a>
|
||||||
### Why Docker not Vagrant!?
|
### Why Docker not Vagrant!?
|
||||||
[Vagrant](https://www.vagrantup.com) gives you Virtual Machines in minutes while Docker gives you Virtual Containers in seconds.
|
|
||||||
|
[Vagrant](https://www.vagrantup.com) creates Virtual Machines in minutes while Docker creates Virtual Containers in seconds.
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
<a name="Default-Containers"></a>
|
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).
|
||||||
## Default Containers
|
|
||||||
|
|
||||||
|
<a name="laradock-vs-homestead"></a>
|
||||||
|
### LaraDock VS Homestead
|
||||||
|
|
||||||
|
LaraDock and [Homestead](https://laravel.com/docs/master/homestead) both gives you a complete virtual development environments. (Without the need to install and configure every single software on your own Operating System).
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
|
||||||
|
Running a virtual Container is much faster than running a full virtual Machine.
|
||||||
|
<br>Thus **LaraDock is much faster than Homestead**.
|
||||||
|
|
||||||
- PHP
|
|
||||||
- NGINX
|
|
||||||
- MySQL
|
|
||||||
- Redis
|
|
||||||
- Data Volume
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Requirements"></a>
|
<a name="Requirements"></a>
|
||||||
## Requirements
|
## Requirements
|
||||||
- Laravel ([Download](https://laravel.com/docs/master/installation))
|
|
||||||
- Docker Toolbox ([Download](https://www.docker.com/toolbox))
|
| Linux | Windows & MAC |
|
||||||
- Git ([Download](https://git-scm.com/downloads))
|
|-----------------------------------------------------------------------------------------|---------------------------------------------------------|
|
||||||
- Composer ([Download](https://getcomposer.org/download/))
|
| [Laravel](https://laravel.com/docs/master/installation) | [Laravel](https://laravel.com/docs/master/installation) |
|
||||||
|
| [Git](https://git-scm.com/downloads) | [Git](https://git-scm.com/downloads) |
|
||||||
|
| [Docker Engine](https://docs.docker.com/engine/installation/linux/ubuntulinux) | [Docker Toolbox](https://www.docker.com/toolbox) |
|
||||||
|
| [Docker Compose](https://docs.docker.com/compose/install) | |
|
||||||
|
|
||||||
|
|
||||||
<a name="Installation"></a>
|
<a name="Installation"></a>
|
||||||
## Installation
|
## 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
|
```bash
|
||||||
git clone https://github.com/LaraDock/laradock.git docker
|
git submodule add https://github.com/LaraDock/laradock.git
|
||||||
```
|
```
|
||||||
|
|
||||||
Instead of `git clone` you can use `git submodule add` in case 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
|
```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.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a name="Usage"></a>
|
<a name="Usage"></a>
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
>**(Windows & MAC users)** Make sure you have a running Docker Virtual Host on your machine first.
|
1 - For **Windows & MAC** users only: make sure you have a running Docker Virtual Host on your machine.
|
||||||
><br>
|
(**Linux** users don't need a Virtual Host, so skip this step).
|
||||||
>[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
|
<br>
|
||||||
|
[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<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
|
```env
|
||||||
DB_HOST=xxx.xxx.xxx.xxx
|
DB_HOST=xxx.xxx.xxx.xxx
|
||||||
@ -114,23 +225,30 @@ DB_HOST=xxx.xxx.xxx.xxx
|
|||||||
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
|
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
2 - Run the containers:
|
3 - Run the Containers, (you can select the software's (containers) that you wish to run)
|
||||||
<br>
|
<br>
|
||||||
*(Make sure you are in the `docker` folder before running this command)*
|
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
|
||||||
|
|
||||||
|
**Example:** Running NGINX, MySQL, Redis and the Workspace:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up -d
|
docker-compose up -d nginx mysql redis workspace
|
||||||
```
|
```
|
||||||
|
*Note: the PHP-FPM, Application and Data Containers will automatically run.*
|
||||||
|
|
||||||
>*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.*
|
|
||||||
|
Supported Containers: `workspace`, `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `memcached`, `beanstalkd`, `beanstalkd-console`, `data`, `php-fpm`, `application`.
|
||||||
|
|
||||||
<br>
|
<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`).
|
||||||
|
|
||||||
|
|
||||||
> **Debugging**: in case you faced an error here, run this command from the Laravel root directory:
|
<br>
|
||||||
> <br>
|
**Debugging**: in case you faced an error here, run this command from the Laravel root directory:
|
||||||
> `sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache`
|
|
||||||
|
```bash
|
||||||
|
sudo chmod -R 777 storage && sudo chmod -R 777 bootstrap/cache
|
||||||
|
```
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@ -149,6 +267,12 @@ docker-compose up -d
|
|||||||
```bash
|
```bash
|
||||||
docker ps
|
docker ps
|
||||||
```
|
```
|
||||||
|
You can also use the this command if you want to see only this project containers:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose ps
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Close-all-running-Containers"></a>
|
<a name="Close-all-running-Containers"></a>
|
||||||
@ -157,69 +281,114 @@ docker ps
|
|||||||
docker-compose stop
|
docker-compose stop
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To stop single container do:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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 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):*
|
*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):*
|
||||||
|
|
||||||
`docker stop {container-name}`
|
|
||||||
|
|
||||||
|
|
||||||
<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:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose build
|
docker-compose build
|
||||||
```
|
```
|
||||||
|
Optionally you can specify which container to rebuild (instead of rebuilding all the containers):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose build {container-name}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Use-Redis-in-Laravel"></a>
|
<a name="Change-the-PHP-Version"></a>
|
||||||
#### Use Redis in Laravel
|
#### Change the PHP Version
|
||||||
|
By default **PHP 7.0** is running.
|
||||||
|
<br>
|
||||||
|
To change the default PHP version:
|
||||||
|
|
||||||
Open your Laravel's `.env` file and set the `REDIS_HOST` to your `Docker-IP` instead of the default `127.0.0.1` IP.
|
1 - Open the `docker-compose.yml`.
|
||||||
|
|
||||||
```env
|
2 - Search for `Dockerfile-70` in the PHP container section.
|
||||||
REDIS_HOST=xxx.xxx.xxx.xxx
|
|
||||||
|
3 - Change the version number.
|
||||||
|
<br>
|
||||||
|
Example to select version 5.6 instead of 7.0 you have to replace `Dockerfile-70` with `Dockerfile-56`.
|
||||||
|
|
||||||
|
Sample:
|
||||||
|
|
||||||
|
```txt
|
||||||
|
php-fpm:
|
||||||
|
build:
|
||||||
|
context: ./php-fpm
|
||||||
|
dockerfile: Dockerfile-70
|
||||||
```
|
```
|
||||||
|
|
||||||
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 default `127.0.0.1` IP with your `Docker-IP` for Redis like this:
|
Supported Versions:
|
||||||
|
|
||||||
```php
|
- For (PHP 7.0.*) use `Dockerfile-70`
|
||||||
'redis' => [
|
- For (PHP 5.6.*) use `Dockerfile-56`
|
||||||
'cluster' => false,
|
- For (PHP 5.5.*) use `Dockerfile-55`
|
||||||
'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
|
4 - Finally rebuild the container
|
||||||
CACHE_DRIVER=redis
|
|
||||||
SESSION_DRIVER=redis
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer first.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
composer require predis/predis:^1.0
|
docker-compose build php
|
||||||
```
|
```
|
||||||
|
|
||||||
You can manually test it with:
|
For more details about the PHP base image, visit the [official PHP docker images](https://hub.docker.com/_/php/).
|
||||||
|
|
||||||
```php
|
|
||||||
\Cache::store('redis')->put('laradock', 'awesome', 10);
|
<br>
|
||||||
|
<a name="Add-Docker-Images"></a>
|
||||||
|
#### 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/).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Edit-Container"></a>
|
||||||
|
#### Edit default container configuration
|
||||||
|
Open the `docker-compose.yml` and change anything you want.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
Change MySQL Database Name:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: laradock
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Change Redis defaut port to 1111:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
ports:
|
||||||
|
- "1111:6379"
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Use-custom-Domain"></a>
|
<a name="Use-custom-Domain"></a>
|
||||||
@ -247,62 +416,75 @@ DB_HOST=xxx.xxx.xxx.xxx
|
|||||||
|
|
||||||
Optionally you can define the server name in the nginx config file, like this:
|
Optionally you can define the server name in the nginx config file, like this:
|
||||||
|
|
||||||
```
|
```conf
|
||||||
server_name laravel.dev;
|
server_name laravel.dev;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
|
||||||
<a name="Change-the-PHP-Version"></a>
|
|
||||||
#### Change the PHP Version
|
|
||||||
By default **PHP 7.0** is running.
|
|
||||||
<br>
|
|
||||||
To change the default PHP version:
|
|
||||||
|
|
||||||
1 - Open the `dockerfile` of the `php` folder.
|
|
||||||
|
|
||||||
2 - Change the PHP version number in the first line,
|
|
||||||
|
|
||||||
```txt
|
|
||||||
FROM php:7.0-fpm
|
|
||||||
```
|
|
||||||
|
|
||||||
Supported Versions:
|
|
||||||
|
|
||||||
- For (PHP 7.0.*) use `php:7.0-fpm`
|
|
||||||
- For (PHP 5.6.*) use `php:5.6-fpm`
|
|
||||||
- For (PHP 5.5.*) use `php:5.5-fpm`
|
|
||||||
|
|
||||||
For more details visit the [official PHP docker images](https://hub.docker.com/_/php/).
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
|
||||||
<a name="Add-Docker-Images"></a>
|
|
||||||
#### 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/).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<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:
|
|
||||||
|
|
||||||
```yml
|
|
||||||
ports:
|
|
||||||
- "3333:3306"
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<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 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}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<br>
|
||||||
|
<a name="Use-Redis"></a>
|
||||||
|
#### Use Redis
|
||||||
|
|
||||||
|
1 - First make sure you run the Redis Container with the `docker-compose` command.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
```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 default `127.0.0.1` IP with your `Docker-IP` for Redis like this:
|
||||||
|
|
||||||
|
```php
|
||||||
|
'redis' => [
|
||||||
|
'cluster' => false,
|
||||||
|
'default' => [
|
||||||
|
'host' => 'xxx.xxx.xxx.xxx',
|
||||||
|
'port' => 6379,
|
||||||
|
'database' => 0,
|
||||||
|
],
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
3 - 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
|
||||||
|
```
|
||||||
|
|
||||||
|
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer first.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
composer require predis/predis:^1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
5 - You can manually test it from Laravel with this code:
|
||||||
|
|
||||||
|
```php
|
||||||
|
\Cache::store('redis')->put('LaraDock', 'Awesome', 10);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@ -311,20 +493,12 @@ The Log files are stored in the `docker/logs` directory.
|
|||||||
|
|
||||||
1 - first list the current running containers with `docker ps`
|
1 - first list the current running containers with `docker ps`
|
||||||
|
|
||||||
2 - enter any container with:
|
2 - enter any container using:
|
||||||
|
|
||||||
Example: enter the `php` container
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker exec -it php bash
|
docker exec -it {container-name} bash
|
||||||
```
|
```
|
||||||
|
3 - to exit a container, type `exit`.
|
||||||
Example: enter the `nginx` container
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker exec -it nginx bash
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
@ -334,6 +508,7 @@ To prevent a container (software) from running, open the `docker-compose.yml` fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a name="Edit-a-Docker-Image"></a>
|
<a name="Edit-a-Docker-Image"></a>
|
||||||
#### Edit a Docker Image
|
#### Edit a Docker Image
|
||||||
@ -427,4 +602,4 @@ If you have any question, send me a direct message on LaraChat, my username is `
|
|||||||
## License
|
## License
|
||||||
|
|
||||||
[MIT License (MIT)](https://github.com/laradock/laradock/blob/master/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"]
|
15
beanstalkd-console/Dockerfile
Normal file
15
beanstalkd-console/Dockerfile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
FROM php:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get install -y curl
|
||||||
|
|
||||||
|
RUN curl -sL https://github.com/ptrofimov/beanstalk_console/archive/master.tar.gz | tar xvz -C /tmp
|
||||||
|
RUN mv /tmp/beanstalk_console-master /source
|
||||||
|
|
||||||
|
RUN apt-get remove --purge -y curl && apt-get autoclean && apt-get clean
|
||||||
|
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
EXPOSE 2080
|
||||||
|
|
||||||
|
CMD bash -c 'BEANSTALK_SERVERS=$BEANSTALKD_PORT_11300_TCP_ADDR:11300 php -S 0.0.0.0:2080 -t /source/public'
|
16
beanstalkd/Dockerfile
Normal file
16
beanstalkd/Dockerfile
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
FROM phusion/baseimage:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
ENV PATH /usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y beanstalkd
|
||||||
|
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
VOLUME /var/lib/beanstalkd/data
|
||||||
|
|
||||||
|
EXPOSE 11300
|
||||||
|
|
||||||
|
CMD ["/usr/bin/beanstalkd"]
|
@ -1,38 +1,54 @@
|
|||||||
version: '2'
|
version: '2'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
|
|
||||||
|
### PHP-FPM Container #######################################
|
||||||
|
|
||||||
|
php-fpm:
|
||||||
|
build:
|
||||||
|
context: ./php-fpm
|
||||||
|
dockerfile: Dockerfile-70
|
||||||
|
volumes_from:
|
||||||
|
- application
|
||||||
|
expose:
|
||||||
|
- "9000"
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
### Nginx Server Container ##################################
|
### Nginx Server Container ##################################
|
||||||
|
|
||||||
nginx:
|
nginx:
|
||||||
build: ./nginx
|
build: ./nginx
|
||||||
container_name: nginx
|
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- php
|
- application
|
||||||
volumes:
|
volumes:
|
||||||
- ./logs/nginx/:/var/log/nginx
|
- ./logs/nginx/:/var/log/nginx
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
links:
|
links:
|
||||||
- php
|
- php-fpm
|
||||||
|
|
||||||
### PHP Container ###########################################
|
|
||||||
|
|
||||||
php:
|
|
||||||
build: ./php
|
|
||||||
container_name: php
|
|
||||||
volumes:
|
|
||||||
- ../:/var/www/laravel
|
|
||||||
- ./logs/php/:/usr/local/var/log
|
|
||||||
expose:
|
|
||||||
- "9000"
|
|
||||||
links:
|
|
||||||
- mysql
|
|
||||||
|
|
||||||
### MySQL Container #########################################
|
### MySQL Container #########################################
|
||||||
|
|
||||||
mysql:
|
mysql:
|
||||||
build: ./mysql
|
build: ./mysql
|
||||||
container_name: mysql
|
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- data
|
||||||
ports:
|
ports:
|
||||||
@ -42,24 +58,87 @@ 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 ####################################
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
build: ./postgres
|
||||||
|
volumes_from:
|
||||||
|
- data
|
||||||
|
ports:
|
||||||
|
- "5432:5432"
|
||||||
|
environment:
|
||||||
|
POSTGRES_DB: homestead
|
||||||
|
POSTGRES_USER: homestead
|
||||||
|
POSTGRES_PASSWORD: secret
|
||||||
|
links:
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
|
### MariaDB Container #######################################
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
build: ./mariadb
|
||||||
|
volumes_from:
|
||||||
|
- data
|
||||||
|
ports:
|
||||||
|
- "3306:3306"
|
||||||
|
environment:
|
||||||
|
MYSQL_DATABASE: homestead
|
||||||
|
MYSQL_USER: homestead
|
||||||
|
MYSQL_PASSWORD: secret
|
||||||
|
MYSQL_ROOT_PASSWORD: root
|
||||||
|
links:
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
### Redis Container #########################################
|
### Redis Container #########################################
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
build: ./redis
|
build: ./redis
|
||||||
container_name: redis
|
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- data
|
- data
|
||||||
ports:
|
ports:
|
||||||
- "6379:6379"
|
- "6379:6379"
|
||||||
|
links:
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
### DATA Container ##########################################
|
### Memcached Container #####################################
|
||||||
|
|
||||||
data:
|
memcached:
|
||||||
build: ./data
|
build: ./memcached
|
||||||
container_name: data
|
volumes_from:
|
||||||
volumes:
|
- data
|
||||||
- /var/lib/mysql
|
ports:
|
||||||
- /var/lib/redis
|
- "11211:11211"
|
||||||
|
links:
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
|
### Beanstalkd Container ####################################
|
||||||
|
|
||||||
|
beanstalkd:
|
||||||
|
build: ./beanstalkd
|
||||||
|
ports:
|
||||||
|
- "11300:11300"
|
||||||
|
privileged: true
|
||||||
|
links:
|
||||||
|
- php-fpm
|
||||||
|
|
||||||
|
### Beanstalkd Console Container ############################
|
||||||
|
|
||||||
|
beanstalkd-console:
|
||||||
|
build: ./beanstalkd-console
|
||||||
|
ports:
|
||||||
|
- "2080:2080"
|
||||||
|
links:
|
||||||
|
- beanstalkd
|
||||||
|
|
||||||
|
### Workspace Utilities Container ###########################
|
||||||
|
|
||||||
|
workspace:
|
||||||
|
build: ./workspace
|
||||||
|
volumes_from:
|
||||||
|
- application
|
||||||
|
tty: true
|
||||||
|
|
||||||
### Add more Containers below ###############################
|
### Add more Containers below ###############################
|
||||||
|
7
mariadb/Dockerfile
Normal file
7
mariadb/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM mariadb:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
CMD ["mysqld"]
|
||||||
|
|
||||||
|
EXPOSE 3306
|
7
memcached/Dockerfile
Normal file
7
memcached/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM memcached:latest
|
||||||
|
|
||||||
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
|
CMD ["memcached"]
|
||||||
|
|
||||||
|
EXPOSE 11211
|
@ -2,8 +2,6 @@ FROM mysql:latest
|
|||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
VOLUME /var/lib/mysql
|
|
||||||
|
|
||||||
CMD ["mysqld"]
|
CMD ["mysqld"]
|
||||||
|
|
||||||
EXPOSE 3306
|
EXPOSE 3306
|
||||||
|
@ -5,7 +5,7 @@ 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/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
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
@ -1,16 +1,28 @@
|
|||||||
FROM php:7.0-fpm
|
FROM php:5.5-fpm
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
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 \
|
||||||
|
curl
|
||||||
|
|
||||||
# Install extensions using the helper script provided by the base image
|
# Install extensions using the helper script provided by the base image
|
||||||
RUN docker-php-ext-install \
|
RUN docker-php-ext-install \
|
||||||
pdo_mysql
|
pdo_mysql \
|
||||||
|
pdo_pgsql
|
||||||
|
|
||||||
|
#Install memcached
|
||||||
|
RUN pecl install memcached \
|
||||||
|
&& docker-php-ext-enable memcached
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
WORKDIR /var/www/laravel
|
||||||
|
|
||||||
CMD ["php-fpm"]
|
CMD ["php-fpm"]
|
||||||
|
|
||||||
EXPOSE 9000
|
EXPOSE 9000
|
28
php-fpm/Dockerfile-56
Normal file
28
php-fpm/Dockerfile-56
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
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
|
32
php-fpm/Dockerfile-70
Normal file
32
php-fpm/Dockerfile-70
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
FROM php:7.0-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 for php 7
|
||||||
|
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
|
||||||
|
&& mkdir -p /usr/src/php/ext/memcached \
|
||||||
|
&& tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
||||||
|
&& docker-php-ext-configure memcached \
|
||||||
|
&& docker-php-ext-install memcached \
|
||||||
|
&& rm /tmp/memcached.tar.gz
|
||||||
|
|
||||||
|
RUN usermod -u 1000 www-data
|
||||||
|
|
||||||
|
WORKDIR /var/www/laravel
|
||||||
|
|
||||||
|
CMD ["php-fpm"]
|
||||||
|
|
||||||
|
EXPOSE 9000
|
@ -1,3 +1,3 @@
|
|||||||
date.timezone = UTC
|
date.timezone = UTC
|
||||||
display_errors = Off
|
display_errors = Off
|
||||||
log_errors = On
|
log_errors = On
|
7
postgres/Dockerfile
Normal file
7
postgres/Dockerfile
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
FROM postgres:latest
|
||||||
|
|
||||||
|
MAINTAINER Ben M <git@bmagg.com>
|
||||||
|
|
||||||
|
CMD ["postgres"]
|
||||||
|
|
||||||
|
EXPOSE 5432
|
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