commit
5ebb061b70
3
.gitignore
vendored
3
.gitignore
vendored
@ -1 +1,2 @@
|
||||
/logs
|
||||
/logs
|
||||
.env
|
156
README.md
156
README.md
@ -40,6 +40,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
||||
- [Install Laravel from a Docker Container](#Install-Laravel)
|
||||
- [Run Artisan Commands](#Run-Artisan-Commands)
|
||||
- [Use Redis](#Use-Redis)
|
||||
- [Use Mongo](#Use-Mongo)
|
||||
- [PHP](#PHP)
|
||||
- [Install PHP Extensions](#Install-PHP-Extensions)
|
||||
- [Change the PHP-FPM Version](#Change-the-PHP-FPM-Version)
|
||||
@ -48,6 +49,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
|
||||
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
|
||||
- [Find your Docker IP Address](#Find-Docker-IP-Address)
|
||||
- [Use custom Domain](#Use-custom-Domain)
|
||||
- [Debugging](#debugging)
|
||||
- [Help & Questions](#Help)
|
||||
|
||||
|
||||
@ -91,6 +93,7 @@ docker-compose up nginx mysql redis
|
||||
- PostgreSQL
|
||||
- MariaDB
|
||||
- Neo4j
|
||||
- MongoDB
|
||||
- Redis
|
||||
- Memcached
|
||||
- Beanstalkd
|
||||
@ -188,15 +191,14 @@ git clone https://github.com/LaraDock/laradock.git
|
||||
|
||||
|
||||
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).
|
||||
|
||||
[How to run a Docker Virtual Host?](#Run-Docker-Virtual-Host)
|
||||
|
||||
|
||||
<br>
|
||||
2 - Run the Containers, (you can select the containers that you wish to run)
|
||||
<br>
|
||||
*Make sure you are in the `laradock` folder before running the `docker-compose` command.*
|
||||
2 - Run some Containers: *(Make sure you are in the `laradock` folder before running the `docker-compose` commands).*
|
||||
|
||||
|
||||
|
||||
**Example:** Running NGINX and MySQL:
|
||||
|
||||
@ -204,10 +206,14 @@ git clone https://github.com/LaraDock/laradock.git
|
||||
docker-compose up -d nginx mysql
|
||||
```
|
||||
|
||||
*Note: the PHP-FPM, Workspace, Application and Data Containers will automatically run.*
|
||||
You can select your own combination of container form this list:
|
||||
|
||||
`nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`, `data`, `php-fpm`, `application`.
|
||||
|
||||
|
||||
**Note**: `workspace`, `data`, `php-fpm` and `application` will run automatically in most of the cases.
|
||||
|
||||
|
||||
Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `memcached`, `beanstalkd`, `beanstalkd-console`, `workspace`, `data`, `php-fpm`, `application`.
|
||||
|
||||
|
||||
|
||||
@ -215,7 +221,7 @@ Supported Containers: `nginx`, `mysql`, `redis`, `postgres`, `mariadb`, `neo4j`,
|
||||
3 - Enter the Workspace container, to execute commands like (Artisan, Composer, PHPUnit, Gulp, ...).
|
||||
|
||||
```bash
|
||||
docker exec -it {Workspace-Container-Name} bash
|
||||
docker-compose run workspace bash
|
||||
```
|
||||
Replace `{Workspace-Container-Name}` with your Workspace container name.
|
||||
<br>
|
||||
@ -242,15 +248,11 @@ DB_HOST=xxx.xxx.xxx.xxx
|
||||
5 - Open your browser and visit your `{Docker-IP}` address (`http://xxx.xxx.xxx.xxx`).
|
||||
|
||||
|
||||
<br>
|
||||
**Debugging**: in case you faced an error here, run this command from the Laravel root directory:
|
||||
|
||||
```bash
|
||||
sudo chmod -R 777 storage bootstrap/cache
|
||||
```
|
||||
|
||||
<br>
|
||||
If you have any problem, or need a special support. Feel free to contact me, more details in the [Help & Questions](#Help) secion.
|
||||
**Debugging**: if you are facing any problem here check the [Debugging](#debugging) section.
|
||||
|
||||
If you need a special support. Contact me, more details in the [Help & Questions](#Help) section.
|
||||
|
||||
|
||||
<br>
|
||||
@ -321,7 +323,7 @@ docker-compose down
|
||||
2 - enter any container using:
|
||||
|
||||
```bash
|
||||
docker exec -it {container-name} bash
|
||||
docker-compose run {container-name} bash
|
||||
```
|
||||
3 - to exit a container, type `exit`.
|
||||
|
||||
@ -492,19 +494,13 @@ You can run artisan commands and many other Terminal commands from the Workspace
|
||||
docker-compose up -d workspace // ..and all your other containers
|
||||
```
|
||||
|
||||
2 - Find the Workspace container name:
|
||||
2 - Enter the Workspace container:
|
||||
|
||||
```bash
|
||||
docker-compose ps
|
||||
docker-compose run workspace /bin/bash
|
||||
```
|
||||
|
||||
3 - Enter the Workspace container:
|
||||
|
||||
```bash
|
||||
docker exec -it {workspace-container-name} bash
|
||||
```
|
||||
|
||||
4 - Run anything you want :)
|
||||
3 - Run anything you want :)
|
||||
|
||||
```bash
|
||||
php artisan
|
||||
@ -515,22 +511,16 @@ Composer update
|
||||
```bash
|
||||
phpunit
|
||||
```
|
||||
```bash
|
||||
laravel new blog
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
<a name="Use-Redis"></a>
|
||||
### Use Redis
|
||||
|
||||
1 - First make sure you run the Redis Container with the `docker-compose` command.
|
||||
1 - First make sure you run the Redis Container (`redis`) with the `docker-compose up` command.
|
||||
|
||||
```bash
|
||||
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.
|
||||
|
||||
@ -558,7 +548,7 @@ CACHE_DRIVER=redis
|
||||
SESSION_DRIVER=redis
|
||||
```
|
||||
|
||||
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer first.
|
||||
4 - Finally make sure you have the `predis/predis` package `(~1.0)` installed via Composer:
|
||||
|
||||
```bash
|
||||
composer require predis/predis:^1.0
|
||||
@ -574,6 +564,59 @@ composer require predis/predis:^1.0
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
<a name="Use-Mongo"></a>
|
||||
### Use Mongo
|
||||
|
||||
1 - First make sure you run the MongoDB Container (`mongo`) with the `docker-compose up` command.
|
||||
|
||||
```bash
|
||||
docker-compose up -d mongo
|
||||
```
|
||||
|
||||
|
||||
2 - Add the MongoDB configurations to the `config/database.php` config file:
|
||||
|
||||
```php
|
||||
'connections' => [
|
||||
|
||||
'mongodb' => [
|
||||
'driver' => 'mongodb',
|
||||
'host' => env('DB_HOST', 'localhost'),
|
||||
'port' => env('DB_PORT', 27017),
|
||||
'database' => env('DB_DATABASE', 'database'),
|
||||
'username' => '',
|
||||
'password' => '',
|
||||
'options' => [
|
||||
'database' => '',
|
||||
]
|
||||
],
|
||||
|
||||
// ...
|
||||
|
||||
],
|
||||
```
|
||||
|
||||
3 - Open your Laravel's `.env` file and update the following variables:
|
||||
|
||||
- set the `DB_HOST` to your `Docker-IP`.
|
||||
- set the `DB_PORT` to `27017`.
|
||||
- set the `DB_DATABASE` to `database`.
|
||||
|
||||
|
||||
4 - Finally make sure you have the `jenssegers/mongodb` package installed via Composer and its Service Provider is added.
|
||||
|
||||
```bash
|
||||
composer require jenssegers/mongodb
|
||||
```
|
||||
More details about this [here](https://github.com/jenssegers/laravel-mongodb#installation).
|
||||
|
||||
5 - 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 Continer `docker-compose run workspace bash`.
|
||||
- Migrate the Database `php artisan migrate`.
|
||||
|
||||
|
||||
|
||||
|
||||
@ -773,6 +816,24 @@ server_name laravel.dev;
|
||||
```
|
||||
|
||||
|
||||
<br>
|
||||
<a name="debugging"></a>
|
||||
### Debugging
|
||||
|
||||
*Here's a list of the common problems you might face, and the possible solutions.*
|
||||
|
||||
#### + I see a blank (white) page instead of the Laravel 'Welcome' page!
|
||||
|
||||
run this command from the Laravel root directory:
|
||||
|
||||
```bash
|
||||
sudo chmod -R 777 storage bootstrap/cache
|
||||
```
|
||||
|
||||
#### + I see "Welcome to nginx" instead of the Laravel App!
|
||||
|
||||
use `http://127.0.0.1` instead of `http://localhost` in your browser.
|
||||
|
||||
|
||||
|
||||
|
||||
@ -786,30 +847,21 @@ server_name laravel.dev;
|
||||
|
||||
This little project was built by one man who has a full time job and many responsibilities, so if you like this project and you find that it needs a bug fix or support for new software or upgrade any container, or anything else.. Do not hesitate to contribute, you are more than welcome :)
|
||||
|
||||
## Support
|
||||
|
||||
To suggest a features or report a bug, open a new [Issue](https://github.com/laradock/laradock/issues).
|
||||
|
||||
|
||||
|
||||
<a name="Help"></a>
|
||||
## Help & Questions
|
||||
|
||||
If you need help with anything related to this project, shedule a live call with me on [Codementor](https://www.codementor.io/mahmoudz), I'd love to help.
|
||||
If you need any help with Docker and Laravel, you can schedule a live call with the creator of this project at [Codementor.io](https://www.codementor.io/mahmoudz), He would love to help.
|
||||
|
||||
If you have a short question, send me a direct message on LaraChat, my username is `mahmoud_zalt`. Or send me an email on `mahmoud@zalt.me`.
|
||||
For general questions you can open [Issues](https://github.com/laradock/laradock/issues) here on Github (We will label them as questions).
|
||||
|
||||
Additionally, you can contact Mahmoud Zalt (the creator of this project) via a direct message on LaraChat, (his username is `mahmoud_zalt`). Or send him an email (`mahmoud@zalt.me`).
|
||||
|
||||
|
||||
## Credits
|
||||
|
||||
[![Mahmoud Zalt](https://img.shields.io/badge/Author-Mahmoud%20Zalt-orange.svg)](http://www.zalt.me)
|
||||
|
||||
Twitter: [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt)
|
||||
<br>
|
||||
Website: [http://zalt.me](http://zalt.me)
|
||||
<br>
|
||||
Email: `mahmoud@zalt.me`
|
||||
|
||||
- [Mahmoud Zalt](https://github.com/Mahmoudz) (Twitter [@Mahmoud_Zalt](https://twitter.com/Mahmoud_Zalt))
|
||||
- [Awesome list of contributors](https://github.com/LaraDock/laradock/graphs/contributors)
|
||||
|
||||
## License
|
||||
|
||||
|
@ -27,12 +27,13 @@ services:
|
||||
data:
|
||||
build: ./data
|
||||
volumes:
|
||||
- /var/lib/mysql
|
||||
- /var/lib/postgres
|
||||
- /var/lib/mariadb
|
||||
- /var/lib/redis
|
||||
- /var/lib/memcached
|
||||
- /var/lib/neo4j/data
|
||||
- /var/lib/mysql:/var/lib/mysql
|
||||
- /var/lib/postgres:/var/lib/postgres
|
||||
- /var/lib/mariadb:/var/lib/mariadb
|
||||
- /var/lib/memcached:/var/lib/memcached
|
||||
- /var/lib/redis:/data
|
||||
- /var/lib/neo4j:/var/lib/neo4j/data
|
||||
- /var/lib/mongo:/data/db
|
||||
|
||||
### Nginx Server Container ##################################
|
||||
|
||||
@ -77,7 +78,7 @@ services:
|
||||
|
||||
### MariaDB Container #######################################
|
||||
|
||||
mariadb:
|
||||
mariadb:
|
||||
build: ./mariadb
|
||||
volumes_from:
|
||||
- data
|
||||
@ -101,6 +102,15 @@ services:
|
||||
volumes_from:
|
||||
- data
|
||||
|
||||
### MongoDB Container #######################################
|
||||
|
||||
mongo:
|
||||
build: ./mongo
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes_from:
|
||||
- data
|
||||
|
||||
### Redis Container #########################################
|
||||
|
||||
redis:
|
||||
@ -143,7 +153,10 @@ services:
|
||||
### Workspace Utilities Container ###########################
|
||||
|
||||
workspace:
|
||||
build: ./workspace
|
||||
build:
|
||||
context: ./workspace
|
||||
args:
|
||||
INSTALL_PRESTISSIMO: ${INSTALL_PRESTISSIMO}
|
||||
volumes_from:
|
||||
- application
|
||||
tty: true
|
||||
|
12
mongo/Dockerfile
Normal file
12
mongo/Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
FROM mongo:latest
|
||||
|
||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||
|
||||
#COPY mongo.conf /usr/local/etc/mongo/mongo.conf
|
||||
|
||||
VOLUME /data/db /data/configdb
|
||||
|
||||
CMD ["mongod"]
|
||||
|
||||
EXPOSE 27017
|
||||
|
@ -8,17 +8,34 @@ ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpq-dev \
|
||||
libmemcached-dev \
|
||||
curl
|
||||
curl \
|
||||
libpng12-dev \
|
||||
libfreetype6-dev \
|
||||
--no-install-recommends \
|
||||
&& rm -r /var/lib/apt/lists/*
|
||||
|
||||
# configure gd library
|
||||
RUN docker-php-ext-configure gd \
|
||||
--enable-gd-native-ttf \
|
||||
--with-freetype-dir=/usr/include/freetype2
|
||||
|
||||
# Install extensions using the helper script provided by the base image
|
||||
RUN docker-php-ext-install \
|
||||
pdo_mysql \
|
||||
pdo_pgsql
|
||||
pdo_pgsql \
|
||||
gd
|
||||
|
||||
#Install memcached
|
||||
# Install memcached
|
||||
RUN pecl install memcached \
|
||||
&& docker-php-ext-enable memcached
|
||||
|
||||
# Install xdebug
|
||||
RUN pecl install xdebug \
|
||||
&& docker-php-ext-enable xdebug
|
||||
|
||||
# Install mongodb driver
|
||||
RUN pecl install mongodb
|
||||
|
||||
RUN usermod -u 1000 www-data
|
||||
|
||||
WORKDIR /var/www/laravel
|
||||
|
@ -8,17 +8,34 @@ ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpq-dev \
|
||||
libmemcached-dev \
|
||||
curl
|
||||
curl \
|
||||
libpng12-dev \
|
||||
libfreetype6-dev \
|
||||
--no-install-recommends \
|
||||
&& rm -r /var/lib/apt/lists/*
|
||||
|
||||
# configure gd library
|
||||
RUN docker-php-ext-configure gd \
|
||||
--enable-gd-native-ttf \
|
||||
--with-freetype-dir=/usr/include/freetype2
|
||||
|
||||
# Install extensions using the helper script provided by the base image
|
||||
RUN docker-php-ext-install \
|
||||
pdo_mysql \
|
||||
pdo_pgsql
|
||||
pdo_pgsql \
|
||||
gd
|
||||
|
||||
#Install memcached
|
||||
# Install memcached
|
||||
RUN pecl install memcached \
|
||||
&& docker-php-ext-enable memcached
|
||||
|
||||
# Install xdebug
|
||||
RUN pecl install xdebug \
|
||||
&& docker-php-ext-enable xdebug
|
||||
|
||||
# Install mongodb driver
|
||||
RUN pecl install mongodb
|
||||
|
||||
RUN usermod -u 1000 www-data
|
||||
|
||||
WORKDIR /var/www/laravel
|
||||
|
@ -8,12 +8,22 @@ ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libpq-dev \
|
||||
libmemcached-dev \
|
||||
curl
|
||||
curl \
|
||||
libpng12-dev \
|
||||
libfreetype6-dev \
|
||||
--no-install-recommends \
|
||||
&& rm -r /var/lib/apt/lists/*
|
||||
|
||||
# configure gd library
|
||||
RUN docker-php-ext-configure gd \
|
||||
--enable-gd-native-ttf \
|
||||
--with-freetype-dir=/usr/include/freetype2
|
||||
|
||||
# Install extensions using the helper script provided by the base image
|
||||
RUN docker-php-ext-install \
|
||||
pdo_mysql \
|
||||
pdo_pgsql
|
||||
pdo_pgsql \
|
||||
gd
|
||||
|
||||
# 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" \
|
||||
@ -23,6 +33,13 @@ RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-m
|
||||
&& docker-php-ext-install memcached \
|
||||
&& rm /tmp/memcached.tar.gz
|
||||
|
||||
# Install xdebug
|
||||
RUN pecl install xdebug \
|
||||
&& docker-php-ext-enable xdebug
|
||||
|
||||
# Install mongodb driver
|
||||
RUN pecl install mongodb
|
||||
|
||||
RUN usermod -u 1000 www-data
|
||||
|
||||
WORKDIR /var/www/laravel
|
||||
|
@ -1,3 +1,4 @@
|
||||
date.timezone = UTC
|
||||
display_errors = Off
|
||||
log_errors = On
|
||||
date.timezone=UTC
|
||||
display_errors=Off
|
||||
log_errors=On
|
||||
extension=mongodb.so
|
||||
|
@ -4,8 +4,8 @@ MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||
|
||||
#COPY redis.conf /usr/local/etc/redis/redis.conf
|
||||
|
||||
VOLUME /var/lib/redis
|
||||
|
||||
CMD [ "redis-server" ]
|
||||
VOLUME /data
|
||||
|
||||
EXPOSE 6379
|
||||
|
||||
CMD ["redis-server"]
|
||||
|
@ -20,7 +20,7 @@ RUN add-apt-repository -y \
|
||||
ppa:ondrej/php
|
||||
|
||||
# Install PHP-CLI 7, some PHP extentions and some useful Tools with APT
|
||||
RUN apt-get update && apt-get install -y \
|
||||
RUN apt-get update && apt-get install -y --force-yes \
|
||||
php7.0-cli \
|
||||
php7.0-common \
|
||||
php7.0-curl \
|
||||
@ -34,34 +34,52 @@ RUN apt-get update && apt-get install -y \
|
||||
php7.0-sqlite3 \
|
||||
php7.0-zip \
|
||||
php7.0-memcached \
|
||||
php7.0-gd \
|
||||
php7.0-xdebug \
|
||||
php-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libedit-dev \
|
||||
libssl-dev \
|
||||
libxml2-dev \
|
||||
xz-utils \
|
||||
sqlite3 \
|
||||
libsqlite3-dev \
|
||||
git \
|
||||
curl \
|
||||
vim \
|
||||
nano \
|
||||
nodejs \
|
||||
nodejs-dev \
|
||||
npm
|
||||
nano
|
||||
|
||||
# Clean up, to free some space
|
||||
RUN apt-get clean
|
||||
|
||||
# Install gulp and bower with NPM
|
||||
RUN npm install -g \
|
||||
gulp \
|
||||
bower
|
||||
# remove load xdebug extension (only load on phpunit command)
|
||||
RUN sed -i 's/^/;/g' /etc/php/7.0/cli/conf.d/20-xdebug.ini
|
||||
|
||||
# Add a symbolic link for Node
|
||||
RUN ln -s /usr/bin/nodejs /usr/bin/node
|
||||
|
||||
# Add an alias for PHPUnit
|
||||
RUN echo "alias phpunit='./vendor/bin/phpunit'" >> ~/.bashrc
|
||||
# Add bin folder of composer to PATH.
|
||||
RUN echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc
|
||||
|
||||
# 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
|
||||
&& mv composer.phar /usr/local/bin/composer
|
||||
|
||||
# Load xdebug Zend extension with phpunit command
|
||||
RUN echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc
|
||||
|
||||
# Install mongodb extension
|
||||
RUN pecl install mongodb
|
||||
RUN echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini
|
||||
|
||||
# Install nvm (Node Version Manager)
|
||||
RUN curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
|
||||
|
||||
ENV NVM_DIR=/root/.nvm
|
||||
|
||||
# Install stable node
|
||||
RUN . ~/.nvm/nvm.sh \
|
||||
&& nvm install stable \
|
||||
&& nvm use stable \
|
||||
&& nvm alias stable \
|
||||
&& npm install -g gulp bower
|
||||
|
||||
# Source the bash
|
||||
RUN . ~/.bashrc
|
||||
@ -70,3 +88,9 @@ RUN . ~/.bashrc
|
||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
WORKDIR /var/www/laravel
|
||||
|
||||
# Install optional software
|
||||
ARG INSTALL_PRESTISSIMO=false
|
||||
RUN if [ "$INSTALL_PRESTISSIMO" = true ] ; then \
|
||||
composer global require "hirak/prestissimo:^0.3"; \
|
||||
fi
|
Loading…
Reference in New Issue
Block a user