Compare commits

...

23 Commits

Author SHA1 Message Date
f97f0b0d11 update readme: include hhvm and new logo 2016-07-24 07:39:25 +03:00
05e1dd4c13 Merge pull request #174 from orette/add-hhvm
Add hhvm
2016-07-24 07:27:40 +03:00
fc78ab7764 Merge remote-tracking branch 'upstream/master' into add-hhvm 2016-07-24 03:05:09 +00:00
ef8579987f Added HHVM container and used environment variable for switching 2016-07-24 02:49:57 +00:00
4dda3b969e add gitter link to the readme 2016-07-23 19:53:16 +03:00
4d2452101a add more awesome people to the contributors list 2016-07-22 00:36:26 +03:00
233cfb5b07 Merge pull request #169 from orette/create-code-standards-file
Added dot file to maintain consistent coding styles
2016-07-22 00:27:37 +03:00
63b9ec2bd8 Added dot file to maintain consistent coding styles 2016-07-21 09:48:21 -05:00
d5a51d4de9 Merge pull request #168 from appleboy/patch-2
convert tab to space.
2016-07-21 16:54:57 +03:00
c7fae1a807 convert tab to space. 2016-07-21 11:05:52 +08:00
d6329c26b3 Merge pull request #165 from orette/mongodb-library-fix
Added pkg-config to the PHP extentions and Tools that are installed from APT
2016-07-21 05:35:04 +03:00
a96ee88692 Added pkg-config to the PHP extentions and Tools that are installed from APT 2016-07-20 15:59:50 -05:00
2799a94a9f Merge pull request #159 from computerfr33k/master
Add caddy webserver container
2016-07-20 07:41:45 +03:00
5bcbe0d291 add rewrite rule to fix 404 errors when navigating to different pages. 2016-07-19 22:16:36 -05:00
9e7a669d5b incorporate upstream changes. 2016-07-19 22:01:20 -05:00
9b084433c3 add caddy server. 2016-07-19 21:51:20 -05:00
fc303dee08 Merge pull request #151 from computerfr33k/issue-147
Fix Memcached extension not installing
2016-07-18 23:55:18 +03:00
d75a43c615 Update Dockerfile-70
fixes memcached extension not installing
2016-07-16 13:07:56 -05:00
06337e6024 Merge pull request #144 from appleboy/patch-7
#140 update php 5.5 and 5.6
2016-07-14 15:29:54 +03:00
16b82d066e #140 update php 5.5 and 5.6
Signed-off-by: Bo-Yi Wu <appleboy.tw@gmail.com>
2016-07-14 09:56:05 +08:00
074deec781 Merge branch 'master' of https://github.com/LaraDock/laradock
* 'master' of https://github.com/LaraDock/laradock:
  fix the volumes mapping
2016-07-14 04:28:12 +03:00
2d382b683a general updates to the readme 2016-07-14 04:27:45 +03:00
68576f9022 fix the volumes mapping 2016-07-13 17:04:06 +03:00
13 changed files with 185 additions and 50 deletions

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*]
charset = utf-8
[{Dockerfile,docker-compose.yml}]
indent_style = space
indent_size = 4

3
.env
View File

@ -1 +1,2 @@
INSTALL_PRESTISSIMO=false INSTALL_PRESTISSIMO=false
PHP_PROCESS_MANAGER=php-fpm

View File

@ -2,13 +2,16 @@
[![forthebadge](http://forthebadge.com/images/badges/built-by-developers.svg)](http://zalt.me) [![forthebadge](http://forthebadge.com/images/badges/built-by-developers.svg)](http://zalt.me)
[![Gitter](https://badges.gitter.im/LaraDock/laradock.svg)](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
LaraDock helps you run your **Laravel** App on **Docker** real quick. LaraDock helps you run your **Laravel** App on **Docker** real quick.
<br> <br>
It's like Laravel Homestead but for Docker instead of Vagrant. It's like Laravel Homestead but for Docker instead of Vagrant.
>With LaraDock, use Docker first and learn about it later.
![](http://s18.postimg.org/fhykchl09/new_laradock_cover.png)
![](https://s31.postimg.org/nbettdki3/lara_dock_poster_new.jpg)
<br> <br>
## Contents ## Contents
@ -49,7 +52,7 @@ It's like Laravel Homestead but for Docker instead of Vagrant.
- [Run a Docker Virtual Host](#Run-Docker-Virtual-Host) - [Run a Docker Virtual Host](#Run-Docker-Virtual-Host)
- [Find your Docker IP Address](#Find-Docker-IP-Address) - [Find your Docker IP Address](#Find-Docker-IP-Address)
- [Use custom Domain](#Use-custom-Domain) - [Use custom Domain](#Use-custom-Domain)
- [Install-Prestissimo](#Install-Prestissimo) - [Install Prestissimo](#Install-Prestissimo)
- [Debugging](#debugging) - [Debugging](#debugging)
- [Help & Questions](#Help) - [Help & Questions](#Help)
@ -71,10 +74,10 @@ docker-compose up nginx mysql redis
<a name="features"></a> <a name="features"></a>
### Features ### Features
- Easy switch between PHP versions: 7.0 - 5.6 - 5.5 ... - Easy switch between PHP versions: 7.0, 5.6, 5.5...
- Choose your favorite database engine: MySQL - Postgres - Redis ... - Choose your favorite database engine: MySQL, Postgres, MariaDB...
- Run your own combination of software's: Memcached - MariaDB ... - Run your own combination of software's: Memcached, HHVM, Beanstalkd...
- Every software runs on a separate container: PHP-FPM - NGINX ... - Every software runs on a separate container: PHP-FPM, NGINX, PHP-CLI...
- Easy to customize any container, with simple edit to the `dockerfile`. - Easy to customize any container, with simple edit to the `dockerfile`.
- All Images extends from an official base Image. (Trusted base Images). - All Images extends from an official base Image. (Trusted base Images).
- Pre-configured Nginx for Laravel. - Pre-configured Nginx for Laravel.
@ -83,6 +86,7 @@ docker-compose up nginx mysql redis
- Clean and well structured Dockerfiles (`dockerfile`). - Clean and well structured Dockerfiles (`dockerfile`).
- Latest version of the Docker Compose file (`docker-compose`). - Latest version of the Docker Compose file (`docker-compose`).
- Everything is visible and editable. - Everything is visible and editable.
- More to come every week..
<a name="Supported-Containers"></a> <a name="Supported-Containers"></a>
@ -90,16 +94,18 @@ docker-compose up nginx mysql redis
- PHP-FPM (7.0 - 5.6 - 5.5) - PHP-FPM (7.0 - 5.6 - 5.5)
- NGINX - NGINX
- HHVM
- MySQL - MySQL
- PostgreSQL - PostgreSQL
- MariaDB - MariaDB
- Neo4j
- MongoDB - MongoDB
- Neo4j
- Redis - Redis
- Memcached - Memcached
- Caddy
- Beanstalkd - Beanstalkd
- Beanstalkd Console - Beanstalkd Console
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano and cURL) - Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano, cURL and much more)
- Data *(Databases Data Container)* - Data *(Databases Data Container)*
- Application *(Application Code Container)* - Application *(Application Code Container)*
@ -113,7 +119,7 @@ docker-compose up nginx mysql redis
<a name="what-is-docker"></a> <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> <a name="what-is-laravel"></a>
### What is Laravel? ### What is Laravel?
@ -140,26 +146,21 @@ LaraDock and [Homestead](https://laravel.com/docs/master/homestead) both gives y
- Homestead is a tool that controls Vagrant for you (using Homestead special commands). And Vagrant manages your Virtual Machine. - 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. - LaraDock is a tool that controls Docker for you (using Docker & Docker Compose official commands). And Docker manages your Virtual Containers.
Running a virtual Container is much faster than running a full virtual Machine. Running a virtual Container is much faster than running a full virtual Machine. Thus **LaraDock is much faster than Homestead**.
<br>Thus **LaraDock is much faster than Homestead**.
<a name="Requirements"></a> <a name="Requirements"></a>
## Requirements ## Requirements
| Linux | Windows & MAC | | Linux | Windows & MAC |
|-----------------------------------------------------------------------------------------|---------------------------------------------------------| |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|
| [Laravel](https://laravel.com/docs/master/installation) | [Laravel](https://laravel.com/docs/master/installation) | | [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) | | [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 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) | | | [Docker Compose](https://docs.docker.com/compose/install) | |
<a name="Demo"></a> <a name="Demo"></a>
## Demo Video ## Demo Video
@ -170,7 +171,7 @@ What's better than a [**Demo Video**](https://www.youtube.com/watch?v=-DamFMczwD
## Installation ## Installation
1 - Clone the `LaraDock` repository. 1 - Clone the `LaraDock` repository:
**A)** If you already have a Laravel project, clone this repository on your `Laravel` root direcotry: **A)** If you already have a Laravel project, clone this repository on your `Laravel` root direcotry:
@ -209,7 +210,7 @@ docker-compose up -d nginx mysql
You can select your own combination of container form this list: 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`. `nginx`, `hhvm` ,`mysql`, `redis`, `postgres`, `mariadb`, `neo4j`, `mongo`, `memcached`, `beanstalkd`, `beanstalkd-console`, `caddy`, `workspace`, `data`, `php-fpm`, `application`.
**Note**: `workspace`, `data`, `php-fpm` and `application` will run automatically in most of the cases. **Note**: `workspace`, `data`, `php-fpm` and `application` will run automatically in most of the cases.
@ -862,12 +863,11 @@ This little project was built by one man who has a full time job and many respon
<a name="Help"></a> <a name="Help"></a>
## Help & Questions ## Help & Questions
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. Join the chat room on [Gitter](https://gitter.im/LaraDock/laradock) and get help and support from the community.
For general questions you can open [Issues](https://github.com/laradock/laradock/issues) here on Github (We will label them as questions). You can as well can open an [issue](https://github.com/laradock/laradock/issues) on Github (will be labeled as Question) and discuss it with people on [Gitter](https://gitter.im/LaraDock/laradock).
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`).
For special help with Docker and/or Laravel, you can schedule a live call with the creator of this project at [Codementor.io](https://www.codementor.io/mahmoudz).
## Credits ## Credits
@ -877,10 +877,13 @@ Additionally, you can contact Mahmoud Zalt (the creator of this project) via a d
**Main Contributors:** **Main Contributors:**
- [Jack Fletcher](https://github.com/Kauhat) - [Eric Pfeiffer (computerfr33k)](https://github.com/computerfr33k)
- [Bo-Yi Wu](https://github.com/appleboy) - [Orette](https://github.com/orette)
- [Amin Mkh](https://github.com/AminMkh) - [Jack Fletcher (Kauhat)](https://github.com/Kauhat)
- [Matthew Tonkin Dunn](https://github.com/mattythebatty) - [Bo-Yi Wu (appleboy)](https://github.com/appleboy)
- [Amin Mkh (AminMkh)](https://github.com/AminMkh)
- [Matthew Tonkin Dunn (mattythebatty)](https://github.com/mattythebatty)
- [Zhivitsa Kirill (zhikiri)](https://github.com/zhikiri)
- [Benmag](https://github.com/benmag) - [Benmag](https://github.com/benmag)
**Awesome People:** **Awesome People:**

12
caddy/Caddyfile Normal file
View File

@ -0,0 +1,12 @@
# Docs: https://caddyserver.com/docs/caddyfile
0.0.0.0:80
fastcgi / php-fpm:9000 php
rewrite {
to /index.php?{query}
}
browse
log stdout
errors stdout
# Uncomment to enable TLS (HTTPS)
# Change the first list to listen on port 443 when enabling TLS
#tls self_signed

22
caddy/Dockerfile Normal file
View File

@ -0,0 +1,22 @@
FROM alpine:3.4
MAINTAINER Eric Pfeiffer <computerfr33k@users.noreply.github.com>
LABEL caddy_version="0.9.0" architecture="amd64"
RUN apk update \
&& apk upgrade \
&& apk add tar curl
RUN curl --silent --show-error --fail --location \
--header "Accept: application/tar+gzip, application/x-gzip, application/octet-stream" -o - \
"https://github.com/mholt/caddy/releases/download/v0.9.0/caddy_linux_amd64.tar.gz" \
| tar --no-same-owner -C /usr/bin/ -xz caddy_linux_amd64 \
&& mv /usr/bin/caddy_linux_amd64 /usr/bin/caddy \
&& chmod 0755 /usr/bin/caddy \
&& /usr/bin/caddy -version
EXPOSE 80 443 2015
WORKDIR /var/www/laravel/public
ENTRYPOINT ["caddy"]
CMD ["-conf", "/etc/Caddyfile"]

View File

@ -5,7 +5,10 @@ services:
### Nginx Server Container ################################## ### Nginx Server Container ##################################
nginx: nginx:
build: ./nginx build:
context: ./nginx
args:
- PHP_UPSTREAM=${PHP_PROCESS_MANAGER}
volumes_from: volumes_from:
- volumes_source - volumes_source
volumes: volumes:
@ -14,7 +17,7 @@ services:
- "80:80" - "80:80"
- "443:443" - "443:443"
links: links:
- php-fpm - ${PHP_PROCESS_MANAGER}
### PHP-FPM Container ####################################### ### PHP-FPM Container #######################################
@ -29,6 +32,17 @@ services:
links: links:
- workspace - workspace
### HHVM Container ##########################################
hhvm:
build: ./hhvm
volumes_from:
- volumes_source
expose:
- "9000"
links:
- workspace
### MySQL Container ######################################### ### MySQL Container #########################################
mysql: mysql:
@ -153,12 +167,28 @@ services:
volumes_data: volumes_data:
build: ./volumes/data build: ./volumes/data
volumes: volumes:
- ./data/mysql:/var/lib/mysql - /var/lib/mysql:/var/lib/mysql
- ./data/postgres:/var/lib/postgres - /var/lib/postgres:/var/lib/postgres
- ./data/mariadb:/var/lib/mariadb - /var/lib/mariadb:/var/lib/mariadb
- ./data/memcached:/var/lib/memcached - /var/lib/memcached:/var/lib/memcached
- ./data/redis:/data - /var/lib/redis:/data
- ./data/neo4j:/var/lib/neo4j/data - /var/lib/neo4j:/var/lib/neo4j/data
- ./data/mongo:/data/db - /var/lib/mongo:/data/db
### Caddy Server Container ##################################
# Edit the Caddyfile if needed (./caddy/Caddyfile)
caddy:
build: ./caddy
volumes_from:
- volumes_source
ports:
- "80:80"
- "443:443"
- "2015:2015"
volumes:
- ./caddy/Caddyfile:/etc/Caddyfile
links:
- php-fpm
### Add more Containers below ############################### ### Add more Containers below ###############################

21
hhvm/Dockerfile Normal file
View File

@ -0,0 +1,21 @@
FROM ubuntu:14.04
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
RUN apt-get update -y && apt-get install -y software-properties-common \
&& add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" \
&& apt-get update -y \
&& apt-get install -y hhvm \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/www/laravel
ADD server.ini /etc/hhvm/server.ini
RUN usermod -u 1000 www-data
WORKDIR /var/www/laravel
CMD ["/usr/bin/hhvm", "-m", "server", "-c", "/etc/hhvm/server.ini"]
EXPOSE 9000

20
hhvm/server.ini Normal file
View File

@ -0,0 +1,20 @@
; php options
pid = /var/run/hhvm/pid
; hhvm specific
hhvm.server.port = 9000
hhvm.server.type = fastcgi
hhvm.server.default_document = index.php
hhvm.server.error_document404 = index.php
hhvm.server.upload.upload_max_file_size = 25M
hhvm.log.level = Error
hhvm.log.header = true
hhvm.log.access[default][file] = /var/log/hhvm/access.log
hhvm.log.access[default][format] = "%h %l %u %t \"%r\" %>s %b"
hhvm.server.source_root=/var/www/laravel/public
hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
; Uncomment to log to files instead of STDOUT
;hhvm.log.use_log_file = true
;hhvm.log.file = /var/log/hhvm/error.log

View File

@ -5,7 +5,9 @@ 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-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf ARG PHP_UPSTREAM
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM}:9000; }" > /etc/nginx/conf.d/upstream.conf
RUN usermod -u 1000 www-data RUN usermod -u 1000 www-data

View File

@ -9,6 +9,7 @@ RUN apt-get update && apt-get install -y \
libpq-dev \ libpq-dev \
libmemcached-dev \ libmemcached-dev \
curl \ curl \
libjpeg-dev \
libpng12-dev \ libpng12-dev \
libfreetype6-dev \ libfreetype6-dev \
libssl-dev \ libssl-dev \
@ -25,6 +26,7 @@ RUN pecl install mongodb
# configure gd library # configure gd library
RUN docker-php-ext-configure gd \ RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \ --enable-gd-native-ttf \
--with-jpeg-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2 --with-freetype-dir=/usr/include/freetype2
# Install extensions using the helper script provided by the base image # Install extensions using the helper script provided by the base image

View File

@ -9,6 +9,7 @@ RUN apt-get update && apt-get install -y \
libpq-dev \ libpq-dev \
libmemcached-dev \ libmemcached-dev \
curl \ curl \
libjpeg-dev \
libpng12-dev \ libpng12-dev \
libfreetype6-dev \ libfreetype6-dev \
libssl-dev \ libssl-dev \
@ -25,6 +26,7 @@ RUN pecl install mongodb
# configure gd library # configure gd library
RUN docker-php-ext-configure gd \ RUN docker-php-ext-configure gd \
--enable-gd-native-ttf \ --enable-gd-native-ttf \
--with-jpeg-dir=/usr/lib \
--with-freetype-dir=/usr/include/freetype2 --with-freetype-dir=/usr/include/freetype2
# Install extensions using the helper script provided by the base image # Install extensions using the helper script provided by the base image

View File

@ -37,11 +37,18 @@ RUN docker-php-ext-install \
# Install Memcached for php 7 # 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" \ 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 \ && mkdir -p memcached \
&& tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \ && tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
&& docker-php-ext-configure memcached \ && ( \
&& docker-php-ext-install memcached \ cd memcached \
&& rm /tmp/memcached.tar.gz && phpize \
&& ./configure \
&& make -j$(nproc) \
&& make install \
) \
&& rm -r memcached \
&& rm /tmp/memcached.tar.gz \
&& docker-php-ext-enable memcached
# Install xdebug # Install xdebug
RUN pecl install xdebug \ RUN pecl install xdebug \

View File

@ -47,7 +47,8 @@ RUN apt-get update && apt-get install -y --force-yes \
git \ git \
curl \ curl \
vim \ vim \
nano nano \
pkg-config
# Clean up, to free some space # Clean up, to free some space
RUN apt-get clean RUN apt-get clean
@ -93,4 +94,4 @@ WORKDIR /var/www/laravel
ARG INSTALL_PRESTISSIMO=false ARG INSTALL_PRESTISSIMO=false
RUN if [ "$INSTALL_PRESTISSIMO" = true ] ; then \ RUN if [ "$INSTALL_PRESTISSIMO" = true ] ; then \
composer global require "hirak/prestissimo:^0.3"; \ composer global require "hirak/prestissimo:^0.3"; \
fi fi