From afac432b2fc5e1c888b3ee82feac4c76d53c3278 Mon Sep 17 00:00:00 2001 From: Mahmoud Zalt Date: Fri, 29 Jul 2016 13:52:16 +0300 Subject: [PATCH] upgrade readme to docker native --- README.md | 205 ++++++++++++++++++++++-------------------------------- 1 file changed, 85 insertions(+), 120 deletions(-) diff --git a/README.md b/README.md index 6b605a6e..6ac4c184 100644 --- a/README.md +++ b/README.md @@ -50,13 +50,12 @@ It's like Laravel Homestead but for Docker instead of Vagrant. - [Change the PHP-CLI Version](#Change-the-PHP-CLI-Version) - [Install xDebug](#Install-xDebug) - [Misc](#Misc) - - [Run a Docker Virtual Host](#Run-Docker-Virtual-Host) - - [Find your Docker IP Address](#Find-Docker-IP-Address) - [Use custom Domain](#Use-custom-Domain) - [Enable Global Composer Build Install](#Enable-Global-Composer-Build-Install) - [Install Prestissimo](#Install-Prestissimo) - [Install Node + NVM](#Install-Node) - [Debugging](#debugging) + - [Upgrading Docker](#upgrading) - [Help & Questions](#Help) @@ -71,7 +70,7 @@ It contains pre-packaged Docker Images that provides you a wonderful development **Usage Overview:** Run `NGINX`, `MySQL` and `Redis`. ```shell -docker-compose up nginx mysql redis +docker-compose up nginx mysql redis ``` @@ -159,20 +158,27 @@ Running a virtual Container is much faster than running a full virtual Machine. - -## Requirements -| Linux | Windows & MAC | -|--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------| -| [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) OR [Native Docker](https://beta.docker.com/) | -| [Docker Compose](https://docs.docker.com/compose/install) | | ## Demo Video -What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwDA) :) +What's better than a **Demo Video**: + +- LaraDock v4.0 (Coming soon..) +- LaraDock [v2.2](https://www.youtube.com/watch?v=-DamFMczwDA) +- LaraDock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI) +- LaraDock [v0.1](https://www.youtube.com/watch?v=3YQsHe6oF80) + + + + +## Requirements + +- [Git](https://git-scm.com/downloads) +- [Docker](https://www.docker.com/products/docker/) + + ## Installation @@ -199,13 +205,17 @@ git clone https://github.com/LaraDock/laradock.git ## Usage -1 - For **Windows & MAC** users only: If you are not using the native Docker-Engine `Beta`, make sure you have a running Docker Virtual Host on your machine. -[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host) -(**Linux** users don't need a Virtual Host, so skip this step). +>**Note:** +
+>LaraDock version 4 and above is customized only for **Docker Native** (For Mac/Windows). +
+>LaraDock version 3 and below is customized only for **Docker Toolbox** (VirtualBox VM). If you are still using the "Docker Toolbox" you might need to check the branch `LaraDock-ToolBox`. + +
-2 - Run some Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).* +1 - Run Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).* @@ -224,39 +234,34 @@ You can select your own combination of Containers form the list below: - -
-3 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, ...). +2 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, ...). ```bash -docker exec -it {Workspace-Container-Name} bash +docker-compose exec workspace bash ``` -Replace `{Workspace-Container-Name}` with your Workspace container name.
-Add `--user=laradock` to have files created as your host's user. (don't forget to change the PUID (User id) and PGID (group id) variables in docker-compose.yml). -
-To find the containers names type `docker-compose ps`. +Add `--user=laradock` (example `docker-compose exec --user=laradock workspace bash`) to have files created as your host's user. (you can change the PUID (User id) and PGID (group id) variables from the `docker-compose.yml`).
-4 - Edit the Laravel configurations. +3 - 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}`: +Open your Laravel's `.env` file and set the `DB_HOST` to your `mysql`: ```env -DB_HOST=xxx.xxx.xxx.xxx +DB_HOST=mysql ``` -[How to find my Docker IP Address?](#Find-Docker-IP-Address) +
-5 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`). +4 - Open your browser and visit your localhost address (`http://localhost/`). @@ -270,8 +275,6 @@ If you need a special support. Contact me, more details in the [Help & Questions ## Documentation -**Note:** this documentation doesn't cover the Docker Beta *(Native Docker on MAC and Windows)*. However, the commands are very similar. We are planning to cover the Docker Beta soon. - ### [Docker] @@ -335,8 +338,15 @@ docker-compose down 2 - enter any container using: ```bash -docker exec -it {container-name} bash +docker-composer exec {container-name} bash ``` + +*Example: enter MySQL container* + +```bash +docker-compose exec mysql bash +``` + 3 - to exit a container, type `exit`. @@ -388,10 +398,7 @@ example for `mysql` it will be `mysql/Dockerfile`. ```bash docker-compose build mysql ``` - -*If you find any bug or you have and suggestion that can improve the performance of any image, please consider contributing. Thanks in advance.* - - +More info on Containers rebuilding [here](#Build-Re-build-Containers). @@ -415,6 +422,7 @@ Optionally you can specify which container to rebuild (instead of rebuilding all docker-compose build {container-name} ``` +You might use the `--no-cache` option if you want full rebuilding (`docker-compose build --no-cache {container-name}`). @@ -492,6 +500,8 @@ Since the new Laravel application is in the `my-cool-app` folder, we need to rep cd my-cool-app ``` +5 - Go back to the laraDock installation steps to see how to edit the `.env` file. +
@@ -515,9 +525,12 @@ docker-compose ps 3 - Enter the Workspace container: ```bash -docker exec -it {workspace-container-name} bash +docker-compose exec workspace bash ``` +Add `--user=laradock` (example `docker-compose exec --user=laradock workspace bash`) to have files created as your host's user. + + 4 - Run anything you want :) ```bash @@ -540,19 +553,19 @@ phpunit docker-compose up -d redis ``` -2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to your `Docker-IP` instead of the default `127.0.0.1` IP. +2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to `redis` ```env -REDIS_HOST=xxx.xxx.xxx.xxx +REDIS_HOST=redis ``` -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: +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 `redis` for Redis like this: ```php 'redis' => [ 'cluster' => false, 'default' => [ - 'host' => 'xxx.xxx.xxx.xxx', + 'host' => 'redis', 'port' => 6379, 'database' => 0, ], @@ -650,7 +663,7 @@ docker-compose up -d mongo 5 - Open your Laravel's `.env` file and update the following variables: -- set the `DB_HOST` to your `Docker-IP`. +- set the `DB_HOST` to your `mongo`. - set the `DB_PORT` to `27017`. - set the `DB_DATABASE` to `database`. @@ -665,7 +678,7 @@ More details about this [here](https://github.com/jenssegers/laravel-mongodb#ins 7 - Test it: - First let your Models extend from the Mongo Eloquent Model. Check the [documentation](https://github.com/jenssegers/laravel-mongodb#eloquent). -- Enter the Workspace Container `docker exec -it --user=laradock laradock_workspace_1 bash`. +- Enter the Workspace Container. - Migrate the Database `php artisan migrate`. @@ -813,92 +826,19 @@ It should be like this: ### [Misc] - - - - -### 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) -``` - - - - - - - -
- -### Find your Docker IP Address - -**On Windows & MAC:** - -Run this command in your terminal: - -```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)* - -
- -> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*. - -
-**On Linux:** - -Run this command in your terminal: - -```shell -ifconfig docker0 | grep 'inet' | cut -d: -f2 | awk '{ print $1}' | head -n1 -``` - -*(The default IP is 172.17.0.1)* - - -
### Use custom Domain (instead of the Docker IP) -Assuming your custom domain is `laravel.dev` and your current `Docker-IP` is `xxx.xxx.xxx.xxx`. +Assuming your custom domain is `laravel.dev` -1 - Open your `/etc/hosts` file and map your `Docker IP` to the `laravel.dev` domain, by adding the following: +1 - Open your `/etc/hosts` file and map your localhost address `127.0.0.1` to the `laravel.dev` domain, by adding the following: ```bash -xxx.xxx.xxx.xxx laravel.dev +127.0.0.1 laravel.dev ``` -2 - Open your Laravel's `.env` file and replace the `127.0.0.1` default values with your `{Docker-IP}`. -
-Example: - -```env -DB_HOST=xxx.xxx.xxx.xxx -``` - -3 - Open your browser and visit `{http://laravel.dev}` - +2 - Open your browser and visit `{http://laravel.dev}` Optionally you can define the server name in the nginx config file, like this: @@ -980,6 +920,8 @@ It should be like this: 3 - Re-build the container `docker-compose build workspace` + +
### Debugging @@ -1003,6 +945,29 @@ Use `http://127.0.0.1` (or [your Docker IP](#Find-Docker-IP-Address)) instead of Make sure the ports for the services that you are trying to run (80, 3306, etc.) are not being used already by other programs, such as a built in `apache`/`httpd` service or other development tools you have installed. + + +
+ +### Upgrading Docker + +#### From Docker Toolbox (VirtualBox) to Docker for Mac/Windows (Native) + +1. Stop the docker vm `docker-machine stop {default}` +2. Install Docker for [Mac](https://docs.docker.com/docker-for-mac/) or [Windows](https://docs.docker.com/docker-for-windows/). +3. Upgrade LaraDock to `v4.*.*`. +4. Use LaraDock as you used to do: `docker-compose up -d nginx mysql`. + +**Note:** If you face any problem with the last step above: rebuild all your containers "Warnning Containers Data might be lost!" +`docker-compose build --no-cache` + + + + + + + +
## Contributing