Compare commits

...

18 Commits

Author SHA1 Message Date
6288935884 remove production-docker-compose.yml
We need to add the docs later.

Closes #524
2017-02-03 10:18:23 -05:00
c5e2e7e1e2 Add deployer support (#579)
* add deployer option

* export path for all composer global installations

* add deployer option

* fix typo

* add readme for deployer installation

* deployer default option changed to false

* Add missing deployer menu
2017-01-31 17:05:42 +08:00
e9d4e5579e Fixing issue 568 (#574)
Increasing buffer sizes for applications like react/babel.

Working on default images was throwing intermitten NGing errors and
requried multiple refreshes
2017-01-27 16:31:46 +08:00
5d2761bc92 Add missing PhpRedis option (#570) 2017-01-26 22:19:13 +08:00
Ivo
43b9515b61 add alias support for laradock user (#572)
add the same alias support as root for the laradock user, inlined the multiple RUN commands
2017-01-26 22:18:09 +08:00
a94f08920a add php exif (#564)
* add php exif

* format
2017-01-22 12:20:27 +08:00
b52dcd4a19 540 added alias support (#557)
* 540 added alias support

* Updated aliases, added content to README.md
2017-01-17 19:09:05 -05:00
TJ
4c8e09526d Fix Workspace Cron Permissions (#555)
When I submitted #538 it looks like I overlooked the crontab file
permissions for the Laradock user. This change ensure that all
crons added during build are set to the correct permission level.
2017-01-16 11:10:49 -05:00
a80ef301a9 541-add-linuxbrew-option (#543)
* 541-add-linuxbrew-option

* 541 updated readme with installation information
2017-01-13 14:12:44 -05:00
fbc71b5a22 Merge pull request #552 from FalAngelSt/patch-1
fixed redis php extension instalation bug
2017-01-13 21:58:55 +08:00
ad5883cdfd fixed redis php extension instalation bug
remove unnecessary RUN command
2017-01-13 15:53:23 +02:00
f9fe45cb75 Merge pull request #551 from mylxsw/master
bugfix for phpredis configuration
2017-01-13 15:18:18 +08:00
a8120a1c46 bugfix for phpredis configuration
bugfix for phpredis configuration
2017-01-13 15:06:35 +08:00
6c55f47fd4 Added instructions on how to fix time lag, this fixes #372, #462 (#547) 2017-01-12 19:26:29 -05:00
f1cd4bb0e2 added phpredis in dockerfile70 (#546) 2017-01-12 19:06:08 -05:00
53146df5d6 Merge pull request #544 from gfd6th/master
Fix bug on mariadb
2017-01-12 18:55:35 +08:00
14f6dffe99 Fix bug on mariadb
Bug on Docker for Mac when we change the database from mysql to mariadb.

Maybe It is not a perfect fix. This fix will not share the same mysql volume, means we could not change database directly. We have to import the database to both database. But it will fix the Bug . Wish for better solution
2017-01-12 18:47:11 +08:00
TJ
721e04370f Updated Crontab for Workspace (#538)
- Crontab now gets added to `/etc/cron.d`
- Base crontab now runs as the `laradock` user

This update resolves #459.
2017-01-10 16:34:55 -05:00
9 changed files with 267 additions and 86 deletions

111
README.md
View File

@ -4,7 +4,7 @@
[![Gitter](https://badges.gitter.im/LaraDock/laradock.svg)](https://gitter.im/LaraDock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
Laradock is a Docker PHP development environment. It facilitate running **PHP** Apps on **Docker**.
Laradock is a Docker PHP development environment. It facilitate running **PHP** Apps on **Docker**.
>Use Docker first and learn about it later.
@ -87,6 +87,9 @@ Laradock is configured to run Laravel Apps by default, and it can be modified to
- [Install Prestissimo](#Install-Prestissimo)
- [Install Node + NVM](#Install-Node)
- [Install Node + YARN](#Install-Yarn)
- [Install Linuxbrew](#Install-Linuxbrew)
- [Common Terminal Aliases](#Common-Aliases)
- [Install Deployer](#Install-Deployer)
- [Debugging](#debugging)
- [Upgrading LaraDock](#upgrading-laradock)
- [Related Projects](#related-projects)
@ -101,13 +104,13 @@ Laradock is configured to run Laravel Apps by default, and it can be modified to
Let's see how easy it is to install `NGINX`, `PHP`, `Composer`, `MySQL`, `Redis` and `Beanstalkd`:
1 - Clone Laradock inside your PHP project:
1 - Clone Laradock inside your PHP project:
```shell
git clone https://github.com/Laradock/laradock.git
```
2 - Enter the laradock folder and run this command:
2 - Enter the laradock folder and run this command:
```shell
docker-compose up -d nginx mysql redis beanstalkd
@ -188,12 +191,15 @@ That's it! enjoy :)
- PHP7-CLI
- Composer
- Git
- Linuxbrew
- Node
- Gulp
- SQLite
- xDebug
- Envoy
- Deployer
- Vim
- Yarn
- ... Many other supported tools are not documented. (Will be updated soon)
>If you can't find your Software, build it yourself and add it to this list. Contributions are welcomed :)
@ -316,7 +322,7 @@ Note: In this case the folder structure will be like this:
- myProject
```
2 - Edit the `docker-compose.yml` file to map to your project directory once you have it (example: `- ../myProject:/var/www`).
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.
@ -409,7 +415,8 @@ You can select your own combination of Containers form the list below:
```bash
docker-compose exec workspace bash
```
Alternatively, for Windows Powershell users: execute the following command to enter any running container:
Alternativey, for Windows Powershell users: execute the following command to enter any running container:
```bash
docker exec -it {workspace-container-id} bash
@ -798,7 +805,7 @@ To control the behavior of xDebug (in the `php-fpm` Container), you can run the
<a name="LaraDock-for-Production"></a>
### Prepare LaraDock for Production
It's recommended for production to create a custom `docker-compose.yml` file. For that reason, LaraDock is shipped with `production-docker-compose.yml` which should contain only the containers you are planning to run on production (usage exampe: `docker-compose -f production-docker-compose.yml up -d nginx mysql redis ...`).
It's recommended for production to create a custom `docker-compose.yml` file. For that reason, LaraDock is shipped with `production-docker-compose.yml` which should contain only the containers you are planning to run on production (usage exampe: `docker-compose -f production-docker-compose.yml up -d nginx mysql redis ...`).
Note: The Database (MySQL/MariaDB/...) ports should not be forwarded on production, because Docker will automatically publish the port on the host, which is quite insecure, unless specifically told not to. So make sure to remove these lines:
@ -1213,15 +1220,15 @@ docker-compose up -d rethinkdb
```php
'connections' => [
'rethinkdb' => [
'name' => 'rethinkdb',
'driver' => 'rethinkdb',
'host' => env('DB_HOST', 'rethinkdb'),
'port' => env('DB_PORT', 28015),
'database' => env('DB_DATABASE', 'test'),
'database' => env('DB_DATABASE', 'test'),
]
// ...
],
@ -1319,7 +1326,7 @@ Make sure you [change the timezone](#Change-the-timezone) if you don't want to u
<br>
<a name="Workspace-ssh"></a>
### Access workspace via ssh
You can access the `workspace` container through `localhost:2222` by setting the `INSTALL_WORKSPACE_SSH` build argument to `true`.
To change the default forwarded port for ssh:
@ -1378,7 +1385,7 @@ The default username and password for the root mysql user are `root` and `root `
Modify the `mysql/my.cnf` file to set your port number, `1234` is used as an example.
```
[mysqld]
[mysqld]
port=1234
```
@ -1524,6 +1531,45 @@ It should be like this:
<br>
<a name="Install-Linuxbrew"></a>
### Install Linuxbrew
Linuxbrew is a package manager for Linux. It is the Linux version of MacOS Homebrew and can be found [here](http://linuxbrew.sh). To install Linuxbrew in the Workspace container:
1 - Open the `docker-compose.yml` file
2 - Search for the `INSTALL_LINUXBREW` argument under the Workspace Container and set it to `true`
It should be like this:
```yml
workspace:
build:
context: ./workspace
args:
- INSTALL_LINUXBREW=true
...
```
3 - Re-build the container `docker-compose build workspace`
<br>
<a name="Common-Aliases"></a>
<br>
### Common Terminal Aliases
When you start your docker container, Laradock will copy the `aliases.sh` file located in the `laradock/workspace` directory and add sourcing to the container `~/.bashrc` file.
You are free to modify the `aliases.sh` as you see fit, adding your own aliases (or function macros) to suit your requirements.
<br>
<a name="Install-Aerospike-Extension"></a>
### Install Aerospike extension
@ -1593,16 +1639,41 @@ It should be like this:
<br>
<a name="Install-Deployer"></a>
### Install Deployer (Deployment tool for PHP)
1 - Open the `docker-compose.yml` file
<br>
2 - Search for the `INSTALL_DEPLOYER` argument under the Workspace Container
<br>
3 - Set it to `true`
<br>
It should be like this:
```yml
workspace:
build:
context: ./workspace
args:
- INSTALL_DEPLOYER=true
...
```
4 - Re-build the containers `docker-compose build workspace`
####[Deployer Documentation Here](https://deployer.org/docs)
<br>
<a name="debugging"></a>
### PHPStorm
Remote debug Laravel web and phpunit tests.
@ -1659,7 +1730,7 @@ Make sure the ports for the services that you are trying to run (22, 80, 443, 33
#### I get Nginx error 404 Not Found on Windows.
1. Go to docker Settings on your Windows machine.
1. Go to docker Settings on your Windows machine.
2. Click on the `Shared Drives` tab and check the drive that contains your project files.
3. Enter your windows username and password.
4. Go to the `reset` tab and click restart docker.
@ -1667,6 +1738,12 @@ Make sure the ports for the services that you are trying to run (22, 80, 443, 33
#### The time in my services does not match the current time
1. Make sure you've [changed the timezone](#Change-the-timezone).
2. Stop and rebuild the containers (`docker-compose up -d --build <services>`)
#### I get Mysql connection refused
@ -1695,7 +1772,7 @@ Moving from Docker Toolbox (VirtualBox) to Docker Native (for Mac/Windows). Requ
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
**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!"

View File

@ -26,6 +26,8 @@ services:
- COMPOSER_GLOBAL_INSTALL=false
- INSTALL_WORKSPACE_SSH=false
- INSTALL_LARAVEL_ENVOY=false
- INSTALL_DEPLOYER=false
- INSTALL_LINUXBREW=false
- PUID=1000
- PGID=1000
- NODE_VERSION=stable
@ -51,8 +53,10 @@ services:
- INSTALL_MONGO=false
- INSTALL_ZIP_ARCHIVE=false
- INSTALL_BCMATH=false
- INSTALL_PHPREDIS=false
- INSTALL_MEMCACHED=false
- INSTALL_OPCACHE=false
- INSTALL_EXIF=false
- INSTALL_AEROSPIKE_EXTENSION=false
- CODEIGNITER=false
dockerfile: Dockerfile-70
@ -118,7 +122,7 @@ services:
### MySQL Container #########################################
mysql:
build:
build:
context: ./mysql
args:
- MYSQL_DATABASE=homestead
@ -135,7 +139,7 @@ services:
mariadb:
build: ./mariadb
volumes:
- mysql:/var/lib/mysql
- mariadb:/var/lib/mysql
ports:
- "3306:3306"
environment:
@ -190,7 +194,7 @@ services:
- "27017:27017"
volumes:
- mongo:/data/db
### RethinkDB Container #######################################
rethinkdb:

View File

@ -15,6 +15,8 @@ server {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

View File

@ -60,6 +60,17 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
docker-php-ext-enable xdebug \
;fi
#####################################
# PHP REDIS EXTENSION FOR PHP 7.0
#####################################
ARG INSTALL_PHPREDIS=false
RUN if [ ${INSTALL_PHPREDIS} = true ]; then \
# Install Php Redis Extension
pecl install -o -f redis \
&& rm -rf /tmp/pear \
&& docker-php-ext-enable redis \
;fi
# Copy xdebug configration for remote debugging
COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
@ -117,6 +128,18 @@ RUN if [ ${INSTALL_MEMCACHED} = true ]; then \
&& docker-php-ext-enable memcached \
;fi
#####################################
# Exif:
#####################################
ARG INSTALL_EXIF=false
RUN if [ ${INSTALL_EXIF} = true ]; then \
# Enable Exif PHP extentions requirements
docker-php-ext-install exif && \
docker-php-ext-enable exif \
;fi
#####################################
# PHP Aerospike:
#####################################

View File

@ -1,62 +0,0 @@
version: '2'
services:
### Workspace Utilities Container ###########################
workspace:
build:
context: ./workspace
args:
- INSTALL_XDEBUG=false
- INSTALL_MONGO=false
- INSTALL_NODE=false
- INSTALL_YARN=false
- INSTALL_DRUSH=false
- INSTALL_AEROSPIKE_EXTENSION=false
- COMPOSER_GLOBAL_INSTALL=false
- INSTALL_WORKSPACE_SSH=false
- PUID=1000
- PGID=1000
- NODE_VERSION=stable
volumes_from:
- volumes_source
ports:
- "22:22"
tty: true
### PHP-FPM Container #######################################
php-fpm:
build:
context: ./php-fpm
args:
- INSTALL_XDEBUG=false
- INSTALL_MONGO=false
- INSTALL_ZIP_ARCHIVE=false
- INSTALL_MEMCACHED=false
- INSTALL_OPCACHE=false
- INSTALL_AEROSPIKE_EXTENSION=false
dockerfile: Dockerfile-70
volumes_from:
- volumes_source
expose:
- "9000"
links:
- workspace
### Application Code Container ######################
volumes_source:
image: tianon/true
volumes:
- ../:/var/www
### Databases Data Container ################################
volumes_data:
image: tianon/true
volumes:
# - ./data/mysql:/var/lib/mysql
### Add All your Software Containers below ###############################

View File

@ -74,12 +74,34 @@ RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
composer global install \
;fi
# Export composer vendor path
RUN echo "" >> ~/.bashrc && \
echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc
#####################################
# Crontab
#####################################
USER root
COPY ./crontab /var/spool/cron/crontabs
COPY ./crontab /etc/cron.d
RUN chmod -R 644 /etc/cron.d
#####################################
# User Aliases
#####################################
USER laradock
COPY ./aliases.sh /home/laradock/aliases.sh
RUN echo "" >> ~/.bashrc && \
echo "# Load Custom Aliases" >> ~/.bashrc && \
echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \
echo "" >> ~/.bashrc
USER root
RUN echo "" >> ~/.bashrc && \
echo "# Load Custom Aliases" >> ~/.bashrc && \
echo "source /home/laradock/aliases.sh" >> ~/.bashrc && \
echo "" >> ~/.bashrc
#####################################
# xDebug:
@ -286,9 +308,53 @@ ENV INSTALL_LARAVEL_ENVOY ${INSTALL_LARAVEL_ENVOY}
RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \
# Install the Laravel Envoy
composer global require "laravel/envoy=~1.0" \
;fi
#####################################
# Deployer:
#####################################
USER laradock
ARG INSTALL_DEPLOYER=false
ENV INSTALL_DEPLOYER ${INSTALL_DEPLOYER}
RUN if [ ${INSTALL_DEPLOYER} = true ]; then \
# Install the Deployer
composer global require "deployer/deployer" \
;fi
#####################################
# Linuxbrew:
#####################################
USER root
ARG INSTALL_LINUXBREW=true
ENV INSTALL_LINUXBREW ${INSTALL_LINUXBREW}
RUN if [ ${INSTALL_LINUXBREW} = true ]; then \
# Preparation
apt-get update && \
apt-get upgrade -y && \
apt-get install -y build-essential make cmake scons curl git \
ruby autoconf automake autoconf-archive \
gettext libtool flex bison \
libbz2-dev libcurl4-openssl-dev \
libexpat-dev libncurses-dev && \
# Install the Linuxbrew
git clone https://github.com/Homebrew/linuxbrew.git ~/.linuxbrew && \
echo "" >> ~/.bashrc && \
echo 'export PATH="~/.composer/vendor/bin:$PATH"' >> ~/.bashrc \
&& composer global require "laravel/envoy=~1.0" \
echo 'export PKG_CONFIG_PATH"=/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig:/usr/lib64/pkgconfig:/usr/lib/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc && \
# Setup linuxbrew
echo 'export LINUXBREWHOME="$HOME/.linuxbrew"' >> ~/.bashrc && \
echo 'export PATH="$LINUXBREWHOME/bin:$PATH"' >> ~/.bashrc && \
echo 'export MANPATH="$LINUXBREWHOME/man:$MANPATH"' >> ~/.bashrc && \
echo 'export PKG_CONFIG_PATH="$LINUXBREWHOME/lib64/pkgconfig:$LINUXBREWHOME/lib/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.bashrc && \
echo 'export LD_LIBRARY_PATH="$LINUXBREWHOME/lib64:$LINUXBREWHOME/lib:$LD_LIBRARY_PATH"' >> ~/.bashrc \
;fi
#

71
workspace/aliases.sh Normal file
View File

@ -0,0 +1,71 @@
#! /bin/sh
# Colors used for status updates
ESC_SEQ="\x1b["
COL_RESET=$ESC_SEQ"39;49;00m"
COL_RED=$ESC_SEQ"31;01m"
COL_GREEN=$ESC_SEQ"32;01m"
COL_YELLOW=$ESC_SEQ"33;01m"
COL_BLUE=$ESC_SEQ"34;01m"
COL_MAGENTA=$ESC_SEQ"35;01m"
COL_CYAN=$ESC_SEQ"36;01m"
# Commonly Used Aliases
alias ..="cd .."
alias c="clear"
alias cla="clear && ls -l"
alias cll="clear && ls -la"
alias cls="clear && ls"
alias code="cd /var/www"
alias ea="vi ~/aliases"
alias g="gulp"
alias home="cd ~"
alias npm-global="npm list -g --depth 0"
alias ra="reload"
alias reload="source ~/.aliases && echo \"$COL_GREEN ==> Aliases Reloaded... $COL_RESET \n \""
alias run="npm run"
alias tree="xtree"
# Laravel / PHP Alisases
alias art="php artisan"
alias artisan="php artisan"
alias cdump="composer dump-autoload -o"
alias composer:dump="composer dump-autoload -o"
alias db:reset="php artisan migrate:reset && php artisan migrate --seed"
alias migrate="php artisan migrate"
alias seed="php artisan:seed"
alias phpunit="./vendor/bin/phpunit"
# requires installation of 'https://www.npmjs.com/package/npms-cli'
alias npms="npms search"
# requires installation of 'https://www.npmjs.com/package/package-menu-cli'
alias pm="package-menu"
# requires installation of 'https://www.npmjs.com/package/pkg-version-cli'
alias pv="package-version"
# requires installation of 'https://github.com/sindresorhus/latest-version-cli'
alias lv="latest-version"
# git aliases
alias gaa="git add ."
alias gd="git --no-pager diff"
alias git-revert="git reset --hard && git clean -df"
alias gs="git status"
alias whoops="git reset --hard && git clean -df"
# Create a new directory and enter it
function mkd() {
mkdir -p "$@" && cd "$@"
}
function md() {
mkdir -p "$@" && cd "$@"
}
function xtree {
find ${1:-.} -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
}

View File

@ -0,0 +1 @@
* * * * * laradock php /var/www/artisan schedule:run >> /dev/null 2>&1

View File

@ -1 +0,0 @@
* * * * * php /var/www/artisan schedule:run >> /dev/null 2>&1