Compare commits

...

9 Commits

Author SHA1 Message Date
537f2c5033 Merge pull request #198 from computerfr33k/master
minimize user switching in workspace build.
2016-07-29 18:24:03 +03:00
f36f9ef6ec minimize user switching in build. 2016-07-29 10:16:06 -05:00
605c191717 add more info for upgrading docker in the reamdme 2016-07-29 14:53:25 +03:00
f2615b9ff2 Merge pull request #194 from Kauhat/fix-composer
Fix user permissions issue when installing Composer in the workspace container
2016-07-29 14:01:48 +03:00
04174b476c Merge pull request #196 from LaraDock/LaraDock-Native
LaraDock Native (For Mac/Windows)
2016-07-29 13:55:23 +03:00
afac432b2f upgrade readme to docker native 2016-07-29 13:52:16 +03:00
2f156edafd Fix syntax error in the beanstalkd-console dockerfile 2016-07-29 13:19:44 +03:00
42d551dead Fix user permissions issue when installing Composer in the workspace
container
2016-07-29 09:59:38 +01:00
b7d38ef7dd parameter data in the path 2016-07-28 11:49:42 +02:00
4 changed files with 106 additions and 135 deletions

208
README.md
View File

@ -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) - [Change the PHP-CLI Version](#Change-the-PHP-CLI-Version)
- [Install xDebug](#Install-xDebug) - [Install xDebug](#Install-xDebug)
- [Misc](#Misc) - [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) - [Use custom Domain](#Use-custom-Domain)
- [Enable Global Composer Build Install](#Enable-Global-Composer-Build-Install) - [Enable Global Composer Build Install](#Enable-Global-Composer-Build-Install)
- [Install Prestissimo](#Install-Prestissimo) - [Install Prestissimo](#Install-Prestissimo)
- [Install Node + NVM](#Install-Node) - [Install Node + NVM](#Install-Node)
- [Debugging](#debugging) - [Debugging](#debugging)
- [Upgrading LaraDock](#upgrading-laradock)
- [Help & Questions](#Help) - [Help & Questions](#Help)
@ -159,20 +158,27 @@ Running a virtual Container is much faster than running a full virtual Machine.
<a name="Requirements"></a>
## 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) | |
<a name="Demo"></a> <a name="Demo"></a>
## Demo Video ## 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)
<a name="Requirements"></a>
## Requirements
- [Git](https://git-scm.com/downloads)
- [Docker](https://www.docker.com/products/docker/)
<a name="Installation"></a> <a name="Installation"></a>
## Installation ## Installation
@ -199,13 +205,21 @@ git clone https://github.com/LaraDock/laradock.git
## Usage ## 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. **Read Before starting:**
[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
(**Linux** users don't need a Virtual Host, so skip this step). If you are using **Docker Toolbox** (VM), do one of the following:
- Upgrade to Docker [Native](https://www.docker.com/products/docker) for Mac/Windows (Recommended). Check out [Upgrading Laradock](#upgrading-laradock)
- Use LaraDock v3.* (Visit the `LaraDock-ToolBox` [Branch](https://github.com/LaraDock/laradock/tree/LaraDock-ToolBox)).
If you are using **Docker Native** (For Mac/Windows) or even for Linux, continue this documentation normally since LaraDock v4 and above is just for that.
<br> <br>
2 - Run some Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).* <br>
1 - Run Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).*
@ -224,39 +238,34 @@ You can select your own combination of Containers form the list below:
<br> <br>
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 ```bash
docker exec -it {Workspace-Container-Name} bash docker-compose exec workspace bash
``` ```
Replace `{Workspace-Container-Name}` with your Workspace container name.
<br /> <br />
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). 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`).
<br>
To find the containers names type `docker-compose ps`.
<br> <br>
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). 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 ```env
DB_HOST=xxx.xxx.xxx.xxx DB_HOST=mysql
``` ```
[How to find my Docker IP Address?](#Find-Docker-IP-Address)
<br> <br>
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 +279,6 @@ If you need a special support. Contact me, more details in the [Help & Questions
<a name="Documentation"></a> <a name="Documentation"></a>
## Documentation ## 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.
<a name="Docker"></a> <a name="Docker"></a>
### [Docker] ### [Docker]
@ -335,8 +342,15 @@ docker-compose down
2 - enter any container using: 2 - enter any container using:
```bash ```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`. 3 - to exit a container, type `exit`.
@ -388,10 +402,7 @@ example for `mysql` it will be `mysql/Dockerfile`.
```bash ```bash
docker-compose build mysql docker-compose build mysql
``` ```
More info on Containers rebuilding [here](#Build-Re-build-Containers).
*If you find any bug or you have and suggestion that can improve the performance of any image, please consider contributing. Thanks in advance.*
@ -415,6 +426,7 @@ Optionally you can specify which container to rebuild (instead of rebuilding all
docker-compose build {container-name} 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 +504,8 @@ Since the new Laravel application is in the `my-cool-app` folder, we need to rep
cd my-cool-app cd my-cool-app
``` ```
5 - Go back to the laraDock installation steps to see how to edit the `.env` file.
<br> <br>
@ -515,9 +529,12 @@ docker-compose ps
3 - Enter the Workspace container: 3 - Enter the Workspace container:
```bash ```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 :) 4 - Run anything you want :)
```bash ```bash
@ -540,19 +557,19 @@ phpunit
docker-compose up -d redis 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 ```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 ```php
'redis' => [ 'redis' => [
'cluster' => false, 'cluster' => false,
'default' => [ 'default' => [
'host' => 'xxx.xxx.xxx.xxx', 'host' => 'redis',
'port' => 6379, 'port' => 6379,
'database' => 0, 'database' => 0,
], ],
@ -650,7 +667,7 @@ docker-compose up -d mongo
5 - Open your Laravel's `.env` file and update the following variables: 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_PORT` to `27017`.
- set the `DB_DATABASE` to `database`. - set the `DB_DATABASE` to `database`.
@ -665,7 +682,7 @@ More details about this [here](https://github.com/jenssegers/laravel-mongodb#ins
7 - Test it: 7 - Test it:
- First let your Models extend from the Mongo Eloquent Model. Check the [documentation](https://github.com/jenssegers/laravel-mongodb#eloquent). - 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`. - Migrate the Database `php artisan migrate`.
@ -813,92 +830,19 @@ It should be like this:
### [Misc] ### [Misc]
<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:**
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)*
<br>
> **boot2docker** users: run `boot2docker ip` *(when boot2docker is up)*.
<br>
**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)*
<br> <br>
<a name="Use-custom-Domain"></a> <a name="Use-custom-Domain"></a>
### Use custom Domain (instead of the Docker IP) ### 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 ```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}`. 2 - Open your browser and visit `{http://laravel.dev}`
<br>
Example:
```env
DB_HOST=xxx.xxx.xxx.xxx
```
3 - Open your browser and visit `{http://laravel.dev}`
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:
@ -980,6 +924,8 @@ It should be like this:
3 - Re-build the container `docker-compose build workspace` 3 - Re-build the container `docker-compose build workspace`
<br> <br>
<a name="debugging"></a> <a name="debugging"></a>
### Debugging ### Debugging
@ -1003,6 +949,30 @@ 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. 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.
<br>
<a name="upgrading-laradock"></a>
### Upgrading LaraDock
Moving from Docker Toolbox (VirtualBox) to Docker Native (for Mac/Windows). Requires upgrading LaraDock from v3.* to v4.*:
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.*.*` (`git pull origin master`)
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
`docker-compose build --no-cache`
"Warnning Containers Data might be lost!"
<br> <br>
## Contributing ## Contributing

View File

@ -7,9 +7,9 @@ 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 curl -sL https://github.com/ptrofimov/beanstalk_console/archive/master.tar.gz | tar xvz -C /tmp
RUN mv /tmp/beanstalk_console-master /source RUN mv /tmp/beanstalk_console-master /source
RUN apt-get remove --purge -y curl && RUN apt-get remove --purge -y curl && \
apt-get autoclean && apt-get autoclean && \
apt-get clean && apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
EXPOSE 2080 EXPOSE 2080

View File

@ -207,12 +207,12 @@ services:
volumes_data: volumes_data:
build: ./volumes/data build: ./volumes/data
volumes: volumes:
- /var/lib/mysql:/var/lib/mysql - ./data/mysql:/var/lib/mysql
- /var/lib/postgres:/var/lib/postgres - ./data/postgres:/var/lib/postgres
- /var/lib/mariadb:/var/lib/mariadb - ./data/mariadb:/var/lib/mariadb
- /var/lib/memcached:/var/lib/memcached - ./data/memcached:/var/lib/memcached
- /var/lib/redis:/data - ./data/redis:/data
- /var/lib/neo4j:/var/lib/neo4j/data - ./data/neo4j:/var/lib/neo4j/data
- /var/lib/mongo:/data/db - ./data/mongo:/data/db
### Add more Containers below ############################### ### Add more Containers below ###############################

View File

@ -70,17 +70,18 @@ ARG PGID=1000
RUN groupadd -g $PGID laradock && \ RUN groupadd -g $PGID laradock && \
useradd -u $PUID -g laradock -m laradock useradd -u $PUID -g laradock -m laradock
# Now switch to our laradock user for the rest of user setup
USER laradock
##################################### #####################################
# Composer: # Composer:
##################################### #####################################
# Add the composer.json # Add the composer.json
ADD ./composer.json /home/laradock/.composer/composer.json COPY ./composer.json /home/laradock/.composer/composer.json
# Check if global install need to be runned # Make sure that ~/.composer belongs to laradock
RUN chown -R laradock:laradock /home/laradock/.composer
USER laradock
# Check if global install need to be ran
ARG COMPOSER_GLOBAL_INSTALL=true ARG COMPOSER_GLOBAL_INSTALL=true
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL} ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \ RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \