# Getting Started

## Requirements

- Git
- Docker `>= 1.12`

## Installation

Choose the setup the best suits your needs.

#### A) Setup for Single Project:

(In case you want a Docker environment for each project)

##### A.1) Setup environment in existing Project:

(In case you already have a project, and you want to setup an environment to run it)

1 - Clone this repository on your project root directory:

    git submodule add https://github.com/Laradock/laradock.git

Note 1: If you are not yet using Git for your PHP project, you can use `git clone https://github.com/Laradock/laradock.git` instead.

Note 2: To keep track of your LaraDock changes, between your projects and also keep LaraDock updated. Check this

Note 3: In this case the folder structure will be like this:

    - project1
    	- laradock
    - project2
    	- laradock

##### A.2) Setup environment first then create project:

(In case you don’t have a project, and you want to create your project inside the Docker environment)

1 - Clone this repository anywhere on your machine:

    git clone https://github.com/laradock/laradock.git

Note: In this case the folder structure will be like this:

    - projects
    	- laradock
    	- myProject

2 - Edit the `docker-compose.yml` file to map to your project directory once you have it (example: `- ../myProject:/var/www`).

3 - Stop and re-run your docker-compose command for the changes to take place.

    docker-compose stop && docker-compose up -d XXXX YYYY ZZZZ ....

#### B) Setup for Multiple Projects:

1 - Clone this repository anywhere on your machine:

    git clone https://github.com/laradock/laradock.git

2 - Edit the `docker-compose.yml` file to map to your projects directories:

        applications:
            image: tianon/true
            volumes:
                - ../project1/:/var/www/project1
                - ../project2/:/var/www/project2

3 - You can access all sites by visiting `http://localhost/project1/public` and `http://localhost/project2/public` but of course that’s not very useful so let’s setup NGINX quickly.

4 - Go to `nginx/sites` and copy `sample.conf.example` to `project1.conf` then to `project2.conf`

5 - Open the `project1.conf` file and edit the `server_name` and the `root` as follow:

        server_name project1.dev;
        root /var/www/project1/public;

Do the same for each project `project2.conf`, `project3.conf`,…

6 - Add the domains to the hosts files.

    127.0.0.1  project1.dev

7 - Create your project Databases. Right now you have to do it manually by entering your DB container, until we automate it soon.

## Usage

Read Before starting:

If you are using Docker Toolbox (VM), do one of the following:

- Upgrade to Docker Native for Mac/Windows (Recommended). Check out Upgrading LaraDock
- Use LaraDock v3.* (Visit the `LaraDock-ToolBox` Branch).

> Warning: If you used an older version of LaraDock it’s highly recommended to rebuild the containers you need to use see how you rebuild a container in order to prevent errors as much as possible.

1 - Run Containers: (Make sure you are in the `laradock` folder before running the `docker-compose` commands).

Example: Running NGINX and MySQL:

    docker-compose up -d nginx mysql

Note: The `workspace` and `php-fpm` will run automatically in most of the cases, so no need to specify them in the `up` command. If you couldn’t find them running then you need specify them as follow: `docker-compose up -d nginx php-fpm mysql workspace`.

You can select your own combination of Containers form the list below:

`nginx`, `hhvm`, `php-fpm`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `apache2`, `caddy`, `memcached`, `beanstalkd`, `beanstalkd-console`, `rabbitmq`, `workspace`, `phpmyadmin`, `aerospike`, `pgadmin`, `elasticsearch`, `rethinkdb`.

2 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, …).

    docker-compose exec workspace bash

Alternatively, for Windows PowerShell users: execute the following command to enter any running container:

    docker exec -it {workspace-container-id} bash

Note: You can 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`).

3 - Edit your project configurations.

Open your `.env` file and set the `DB_HOST` to `mysql`:

    DB_HOST=mysql

If you want to use Laravel and you don’t have it installed yet, see How to Install Laravel in a Docker Container.

4 - Open your browser and visit your localhost address (`http://localhost/`).

Debugging: if you are facing any problem here check the Debugging section.

If you need a special support. Contact me, more details in the Help & Questions section.

Documentation built with Hugo using the Material theme.