Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
33b701afdc | |||
e0c18374df | |||
20adc9ca13 | |||
dd9855d411 | |||
17e252a436 | |||
dd06f1e1a0 | |||
2ba3060564 | |||
5612874b78 | |||
10af217349 | |||
e65f0dceba | |||
c792a780ee | |||
2d1c1586f5 | |||
5bb3d3b6a8 | |||
b1ec5b8d6f | |||
6e07061deb | |||
97057f259c | |||
e4f6cec536 | |||
e6cf30e7ba | |||
ed8e241007 |
38
README.md
38
README.md
@ -88,13 +88,14 @@ 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.
|
||||||
|
- Fast Images Builds.
|
||||||
- More to come every week..
|
- More to come every week..
|
||||||
|
|
||||||
|
|
||||||
<a name="Supported-Containers"></a>
|
<a name="Supported-Containers"></a>
|
||||||
### Supported Containers
|
### Supported Containers
|
||||||
|
|
||||||
- PHP-FPM (7.0 - 5.6 - 5.5)
|
- PHP-FPM
|
||||||
- NGINX
|
- NGINX
|
||||||
- HHVM
|
- HHVM
|
||||||
- MySQL
|
- MySQL
|
||||||
@ -107,7 +108,7 @@ docker-compose up nginx mysql redis
|
|||||||
- Caddy
|
- Caddy
|
||||||
- Beanstalkd
|
- Beanstalkd
|
||||||
- Beanstalkd Console
|
- Beanstalkd Console
|
||||||
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, Bower, SQLite, Vim, Nano, cURL and much more)
|
- Workspace (contains: Composer, PHP7-CLI, Laravel Installer, Git, Node, Gulp, SQLite, Vim, Nano, cURL...)
|
||||||
|
|
||||||
|
|
||||||
>If you can't find your container, build it yourself and add it to this list. Contributions are welcomed :)
|
>If you can't find your container, build it yourself and add it to this list. Contributions are welcomed :)
|
||||||
@ -226,6 +227,8 @@ You can select your own combination of container form this list:
|
|||||||
docker exec -it {Workspace-Container-Name} bash
|
docker exec -it {Workspace-Container-Name} bash
|
||||||
```
|
```
|
||||||
Replace `{Workspace-Container-Name}` with your Workspace container name.
|
Replace `{Workspace-Container-Name}` with your Workspace container name.
|
||||||
|
<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).
|
||||||
<br>
|
<br>
|
||||||
To find the containers names type `docker-compose ps`.
|
To find the containers names type `docker-compose ps`.
|
||||||
|
|
||||||
@ -656,7 +659,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 laradock_workspace_1 bash`.
|
- Enter the Workspace Container `docker exec -it --user=laradock laradock_workspace_1 bash`.
|
||||||
- Migrate the Database `php artisan migrate`.
|
- Migrate the Database `php artisan migrate`.
|
||||||
|
|
||||||
|
|
||||||
@ -703,7 +706,7 @@ By default **PHP-FPM 7.0** is running.
|
|||||||
|
|
||||||
2 - Search for `Dockerfile-70` in the PHP container section.
|
2 - Search for `Dockerfile-70` in the PHP container section.
|
||||||
|
|
||||||
3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-5`, like this:
|
3 - Change the version number, by replacing `Dockerfile-70` with `Dockerfile-56`, like this:
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
php-fpm:
|
php-fpm:
|
||||||
@ -718,30 +721,27 @@ php-fpm:
|
|||||||
docker-compose build php
|
docker-compose build php
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> For more details about the PHP base image, visit the [official PHP docker images](https://hub.docker.com/_/php/).
|
||||||
|
|
||||||
|
|
||||||
#### B) Switch from PHP `7.0` or `5.6` to PHP `5.5`
|
#### B) Switch from PHP `7.0` or `5.6` to PHP `5.5`
|
||||||
|
|
||||||
1 - Follow the steps of (Switch from PHP `7.0` to PHP `5.6`) except the last one "rebuilding container".
|
We do not natively support PHP 5.5 anymore, but you can get it in few steps:
|
||||||
|
|
||||||
2 - Open the `docker-compose.yml` again and make sure you are using `Dockerfile-5` like this:
|
1 - Clone `https://github.com/LaraDock/php-fpm`.
|
||||||
|
|
||||||
```txt
|
3 - Rename `Dockerfile-56` to `Dockerfile-55`.
|
||||||
php-fpm:
|
|
||||||
build:
|
|
||||||
context: ./php-fpm
|
|
||||||
dockerfile: Dockerfile-5
|
|
||||||
```
|
|
||||||
|
|
||||||
3 - Open `php-fpm/Dockerfile-5` file and on the first line replace the PHP version from (`FROM php:5.6-fpm`) to (`FROM php:5.5-fpm`).
|
3 - Edit the file `FROM php:5.6-fpm` to `FROM php:5.5-fpm`.
|
||||||
|
|
||||||
4 - Now you can rebuild the container
|
4 - Build an image from `Dockerfile-55`.
|
||||||
|
|
||||||
|
5 - Open the `docker-compose.yml` file.
|
||||||
|
|
||||||
|
6 - Point `php-fpm` to your `Dockerfile-55` file.
|
||||||
|
|
||||||
```bash
|
|
||||||
docker-compose build php
|
|
||||||
```
|
|
||||||
|
|
||||||
<br>
|
|
||||||
|
|
||||||
For more details about the PHP base image, visit the [official PHP docker images](https://hub.docker.com/_/php/).
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,12 +1,17 @@
|
|||||||
# Docs: https://caddyserver.com/docs/caddyfile
|
# Docs: https://caddyserver.com/docs/caddyfile
|
||||||
0.0.0.0:80
|
0.0.0.0:80
|
||||||
fastcgi / php-fpm:9000 php
|
root /var/www/laravel/public
|
||||||
|
fastcgi / php-fpm:9000 php {
|
||||||
|
index index.php
|
||||||
|
}
|
||||||
rewrite {
|
rewrite {
|
||||||
|
r .*
|
||||||
|
ext /
|
||||||
to /index.php?{query}
|
to /index.php?{query}
|
||||||
}
|
}
|
||||||
browse
|
browse
|
||||||
log stdout
|
log stdout
|
||||||
errors stdout
|
errors stderr
|
||||||
# Uncomment to enable TLS (HTTPS)
|
# Uncomment to enable TLS (HTTPS)
|
||||||
# Change the first list to listen on port 443 when enabling TLS
|
# Change the first list to listen on port 443 when enabling TLS
|
||||||
#tls self_signed
|
#tls self_signed
|
||||||
|
@ -12,6 +12,8 @@ services:
|
|||||||
- INSTALL_XDEBUG=false
|
- INSTALL_XDEBUG=false
|
||||||
- INSTALL_NODE=false
|
- INSTALL_NODE=false
|
||||||
- COMPOSER_GLOBAL_INSTALL=false
|
- COMPOSER_GLOBAL_INSTALL=false
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
volumes_from:
|
volumes_from:
|
||||||
- volumes_source
|
- volumes_source
|
||||||
tty: true
|
tty: true
|
||||||
|
@ -1,15 +1,18 @@
|
|||||||
FROM nginx:latest
|
FROM nginx:alpine
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
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/conf.d/laravel.conf
|
||||||
|
|
||||||
ARG PHP_UPSTREAM
|
ARG PHP_UPSTREAM=php-fpm
|
||||||
|
|
||||||
RUN echo "upstream php-upstream { server ${PHP_UPSTREAM}:9000; }" > /etc/nginx/conf.d/upstream.conf
|
RUN apk update \
|
||||||
|
&& apk upgrade \
|
||||||
RUN usermod -u 1000 www-data
|
&& apk add --no-cache bash \
|
||||||
|
&& adduser -D -H -u 1000 -s /bin/bash www-data \
|
||||||
|
&& rm /etc/nginx/conf.d/default.conf \
|
||||||
|
&& echo "upstream php-upstream { server ${PHP_UPSTREAM}:9000; }" > /etc/nginx/conf.d/upstream.conf
|
||||||
|
|
||||||
CMD ["nginx"]
|
CMD ["nginx"]
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
user www-data;
|
user www-data;
|
||||||
worker_processes 4;
|
worker_processes 4;
|
||||||
pid /run/nginx.pid;
|
pid /run/nginx.pid;
|
||||||
|
daemon off;
|
||||||
|
|
||||||
events {
|
events {
|
||||||
worker_connections 2048;
|
worker_connections 2048;
|
||||||
@ -18,13 +19,10 @@ http {
|
|||||||
client_max_body_size 20M;
|
client_max_body_size 20M;
|
||||||
include /etc/nginx/mime.types;
|
include /etc/nginx/mime.types;
|
||||||
default_type application/octet-stream;
|
default_type application/octet-stream;
|
||||||
access_log on;
|
access_log /var/log/nginx/access.log;
|
||||||
error_log on;
|
error_log /var/log/nginx/error.log;
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_disable "msie6";
|
gzip_disable "msie6";
|
||||||
include /etc/nginx/conf.d/*.conf;
|
include /etc/nginx/conf.d/*.conf;
|
||||||
include /etc/nginx/sites-available/*;
|
|
||||||
open_file_cache max=100;
|
open_file_cache max=100;
|
||||||
}
|
}
|
||||||
|
|
||||||
daemon off;
|
|
||||||
|
@ -4,65 +4,32 @@
|
|||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
||||||
FROM php:5.6-fpm
|
FROM laradock/php-fpm:5.6--1.0
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
#
|
||||||
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
#--------------------------------------------------------------------------
|
||||||
|
# Mandatory Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....)
|
||||||
|
# are installed on the base image 'laradock/php-fpm' image. If you want
|
||||||
|
# to add more Software's or remove existing one, you need to edit the
|
||||||
|
# base image (https://github.com/LaraDock/php-fpm).
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Software's Installation
|
# Optional Software's Installation
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
|
# Optional Software's will only be installed if you set them to `true`
|
||||||
|
# in the `docker-compose.yml` before the build.
|
||||||
|
#
|
||||||
|
# - INSTALL_XDEBUG= false
|
||||||
|
# - INSTALL_MONGO= false
|
||||||
#
|
#
|
||||||
|
|
||||||
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
|
|
||||||
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
curl \
|
|
||||||
libmemcached-dev \
|
|
||||||
libz-dev \
|
|
||||||
libpq-dev \
|
|
||||||
libjpeg-dev \
|
|
||||||
libpng12-dev \
|
|
||||||
libfreetype6-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libmcrypt-dev
|
|
||||||
|
|
||||||
# Install the PHP mcrypt extention
|
|
||||||
RUN docker-php-ext-install mcrypt
|
|
||||||
|
|
||||||
# Install the PHP pdo_mysql extention
|
|
||||||
RUN docker-php-ext-install pdo_mysql
|
|
||||||
|
|
||||||
# Install the PHP pdo_pgsql extention
|
|
||||||
RUN docker-php-ext-install pdo_pgsql
|
|
||||||
|
|
||||||
#####################################
|
|
||||||
# gd:
|
|
||||||
#####################################
|
|
||||||
|
|
||||||
# Install the PHP gd library
|
|
||||||
RUN docker-php-ext-install gd && \
|
|
||||||
docker-php-ext-configure gd \
|
|
||||||
--enable-gd-native-ttf \
|
|
||||||
--with-jpeg-dir=/usr/lib \
|
|
||||||
--with-freetype-dir=/usr/include/freetype2
|
|
||||||
|
|
||||||
#####################################
|
|
||||||
# MongoDB:
|
|
||||||
#####################################
|
|
||||||
|
|
||||||
ARG INSTALL_MONGO=true
|
|
||||||
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
|
||||||
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|
||||||
# Install the mongodb extention
|
|
||||||
pecl install mongodb \
|
|
||||||
;fi
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# xDebug:
|
# xDebug:
|
||||||
@ -76,6 +43,16 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|||||||
docker-php-ext-enable xdebug \
|
docker-php-ext-enable xdebug \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# MongoDB:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
ARG INSTALL_MONGO=true
|
||||||
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
|
# Install the mongodb extention
|
||||||
|
pecl install mongodb \
|
||||||
|
;fi
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
@ -83,6 +60,9 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
||||||
|
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
||||||
|
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||||
|
|
||||||
RUN rm -r /var/lib/apt/lists/*
|
RUN rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN usermod -u 1000 www-data
|
@ -4,65 +4,32 @@
|
|||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
||||||
FROM php:7.0-fpm
|
FROM laradock/php-fpm:7.0--1.0
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
#
|
||||||
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
#--------------------------------------------------------------------------
|
||||||
|
# Mandatory Software's Installation
|
||||||
|
#--------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Mandatory Software's such as ("mcrypt", "pdo_mysql", "libssl-dev", ....)
|
||||||
|
# are installed on the base image 'laradock/php-fpm' image. If you want
|
||||||
|
# to add more Software's or remove existing one, you need to edit the
|
||||||
|
# base image (https://github.com/LaraDock/php-fpm).
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Software's Installation
|
# Optional Software's Installation
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Installing tools and PHP extentions using "apt", "docker-php", "pecl",
|
# Optional Software's will only be installed if you set them to `true`
|
||||||
|
# in the `docker-compose.yml` before the build.
|
||||||
|
#
|
||||||
|
# - INSTALL_XDEBUG= false
|
||||||
|
# - INSTALL_MONGO= false
|
||||||
#
|
#
|
||||||
|
|
||||||
# Install "curl", "libmemcached-dev", "libpq-dev", "libjpeg-dev",
|
|
||||||
# "libpng12-dev", "libfreetype6-dev", "libssl-dev", "libmcrypt-dev",
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get install -y --no-install-recommends \
|
|
||||||
curl \
|
|
||||||
libmemcached-dev \
|
|
||||||
libz-dev \
|
|
||||||
libpq-dev \
|
|
||||||
libjpeg-dev \
|
|
||||||
libpng12-dev \
|
|
||||||
libfreetype6-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libmcrypt-dev
|
|
||||||
|
|
||||||
# Install the PHP mcrypt extention
|
|
||||||
RUN docker-php-ext-install mcrypt
|
|
||||||
|
|
||||||
# Install the PHP pdo_mysql extention
|
|
||||||
RUN docker-php-ext-install pdo_mysql
|
|
||||||
|
|
||||||
# Install the PHP pdo_pgsql extention
|
|
||||||
RUN docker-php-ext-install pdo_pgsql
|
|
||||||
|
|
||||||
#####################################
|
|
||||||
# gd:
|
|
||||||
#####################################
|
|
||||||
|
|
||||||
# Install the PHP gd library
|
|
||||||
RUN docker-php-ext-install gd && \
|
|
||||||
docker-php-ext-configure gd \
|
|
||||||
--enable-gd-native-ttf \
|
|
||||||
--with-jpeg-dir=/usr/lib \
|
|
||||||
--with-freetype-dir=/usr/include/freetype2
|
|
||||||
|
|
||||||
#####################################
|
|
||||||
# MongoDB:
|
|
||||||
#####################################
|
|
||||||
|
|
||||||
ARG INSTALL_MONGO=true
|
|
||||||
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
|
||||||
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|
||||||
# Install the mongodb extention
|
|
||||||
pecl install mongodb \
|
|
||||||
;fi
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# xDebug:
|
# xDebug:
|
||||||
@ -77,23 +44,15 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|||||||
;fi
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# Memcached:
|
# MongoDB:
|
||||||
#####################################
|
#####################################
|
||||||
|
|
||||||
# Install the memcached extention
|
ARG INSTALL_MONGO=true
|
||||||
RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/php7.tar.gz" \
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
&& mkdir -p memcached \
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
&& tar -C memcached -zxvf /tmp/memcached.tar.gz --strip 1 \
|
# Install the mongodb extention
|
||||||
&& ( \
|
pecl install mongodb \
|
||||||
cd memcached \
|
;fi
|
||||||
&& phpize \
|
|
||||||
&& ./configure \
|
|
||||||
&& make -j$(nproc) \
|
|
||||||
&& make install \
|
|
||||||
) \
|
|
||||||
&& rm -r memcached \
|
|
||||||
&& rm /tmp/memcached.tar.gz \
|
|
||||||
&& docker-php-ext-enable memcached
|
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
@ -101,6 +60,9 @@ RUN curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-m
|
|||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
||||||
|
ADD ./laravel.ini /usr/local/etc/php/conf.d
|
||||||
|
ADD ./laravel.pool.conf /usr/local/etc/php-fpm.d/
|
||||||
|
|
||||||
RUN rm -r /var/lib/apt/lists/*
|
RUN rm -r /var/lib/apt/lists/*
|
||||||
|
|
||||||
RUN usermod -u 1000 www-data
|
RUN usermod -u 1000 www-data
|
||||||
|
@ -4,94 +4,34 @@
|
|||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
||||||
FROM phusion/baseimage:latest
|
FROM laradock/workspace:1.0
|
||||||
|
|
||||||
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
|
||||||
|
|
||||||
RUN DEBIAN_FRONTEND=noninteractive
|
#
|
||||||
RUN locale-gen en_US.UTF-8
|
#--------------------------------------------------------------------------
|
||||||
|
# Mandatory Software's Installation
|
||||||
ENV LANGUAGE=en_US.UTF-8
|
#--------------------------------------------------------------------------
|
||||||
ENV LC_ALL=en_US.UTF-8
|
#
|
||||||
ENV LC_CTYPE=UTF-8
|
# Mandatory Software's such as ("php7.0-cli", "git", "vim", ....) are
|
||||||
ENV LANG=en_US.UTF-8
|
# installed on the base image 'laradock/workspace' image. If you want
|
||||||
ENV TERM xterm
|
# to add more Software's or remove existing one, you need to edit the
|
||||||
|
# base image (https://github.com/LaraDock/workspace).
|
||||||
# Add the "PHP 7" ppa
|
#
|
||||||
RUN apt-get install -y software-properties-common && \
|
|
||||||
add-apt-repository -y ppa:ondrej/php
|
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Software's Installation
|
# Optional Software's Installation
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
# Optional Software's will only be installed if you set them to `true`
|
||||||
# Install "PHP Extentions", "libraries", "Software's"
|
# in the `docker-compose.yml` before the build.
|
||||||
RUN apt-get update && \
|
#
|
||||||
apt-get install -y --force-yes \
|
# - INSTALL_XDEBUG= false
|
||||||
php7.0-cli \
|
# - INSTALL_MONGO= false
|
||||||
php7.0-common \
|
# - COMPOSER_GLOBAL_INSTALL= false
|
||||||
php7.0-curl \
|
# - INSTALL_NODE= false
|
||||||
php7.0-json \
|
#
|
||||||
php7.0-xml \
|
|
||||||
php7.0-mbstring \
|
|
||||||
php7.0-mcrypt \
|
|
||||||
php7.0-mysql \
|
|
||||||
php7.0-pgsql \
|
|
||||||
php7.0-sqlite \
|
|
||||||
php7.0-sqlite3 \
|
|
||||||
php7.0-zip \
|
|
||||||
php7.0-memcached \
|
|
||||||
php7.0-gd \
|
|
||||||
pkg-config \
|
|
||||||
php-dev \
|
|
||||||
libcurl4-openssl-dev \
|
|
||||||
libedit-dev \
|
|
||||||
libssl-dev \
|
|
||||||
libxml2-dev \
|
|
||||||
xz-utils \
|
|
||||||
libsqlite3-dev \
|
|
||||||
sqlite3 \
|
|
||||||
git \
|
|
||||||
curl \
|
|
||||||
vim \
|
|
||||||
nano \
|
|
||||||
&& apt-get clean
|
|
||||||
|
|
||||||
#####################################
|
|
||||||
# Composer:
|
|
||||||
#####################################
|
|
||||||
|
|
||||||
# Install composer and add its bin to the PATH.
|
|
||||||
RUN curl -s http://getcomposer.org/installer | php && \
|
|
||||||
echo "export PATH=${PATH}:/var/www/laravel/vendor/bin" >> ~/.bashrc && \
|
|
||||||
mv composer.phar /usr/local/bin/composer
|
|
||||||
|
|
||||||
# Add the composer.json
|
|
||||||
ADD ./composer.json /root/.composer/composer.json
|
|
||||||
|
|
||||||
# Check if global install need to be runned
|
|
||||||
ARG COMPOSER_GLOBAL_INSTALL=true
|
|
||||||
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
|
|
||||||
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
|
|
||||||
# run the install
|
|
||||||
composer global install \
|
|
||||||
;fi
|
|
||||||
|
|
||||||
|
|
||||||
#####################################
|
|
||||||
# MongoDB:
|
|
||||||
#####################################
|
|
||||||
|
|
||||||
# Check if Mongo needs to be installed
|
|
||||||
ARG INSTALL_MONGO=true
|
|
||||||
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
|
||||||
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
|
||||||
# Install the mongodb extension
|
|
||||||
pecl install mongodb && \
|
|
||||||
echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini \
|
|
||||||
;fi
|
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# xDebug:
|
# xDebug:
|
||||||
@ -107,6 +47,47 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|||||||
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc \
|
echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/laravel/vendor/bin/phpunit'" >> ~/.bashrc \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# MongoDB:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Check if Mongo needs to be installed
|
||||||
|
ARG INSTALL_MONGO=true
|
||||||
|
ENV INSTALL_MONGO ${INSTALL_MONGO}
|
||||||
|
RUN if [ ${INSTALL_MONGO} = true ]; then \
|
||||||
|
# Install the mongodb extension
|
||||||
|
pecl install mongodb && \
|
||||||
|
echo "extension=mongodb.so" >> /etc/php/7.0/cli/php.ini \
|
||||||
|
;fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Non-Root User:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Add a non-root user to prevent files being created with root permissions on host machine.
|
||||||
|
ARG PUID=1000
|
||||||
|
ARG PGID=1000
|
||||||
|
RUN groupadd -g $PGID laradock && \
|
||||||
|
useradd -u $PUID -g laradock -m laradock
|
||||||
|
|
||||||
|
# Now switch to our laradock user for the rest of user setup
|
||||||
|
USER laradock
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Composer:
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
# Add the composer.json
|
||||||
|
ADD ./composer.json /home/laradock/.composer/composer.json
|
||||||
|
|
||||||
|
# Check if global install need to be runned
|
||||||
|
ARG COMPOSER_GLOBAL_INSTALL=true
|
||||||
|
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
|
||||||
|
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
|
||||||
|
# run the install
|
||||||
|
composer global install \
|
||||||
|
;fi
|
||||||
|
|
||||||
#####################################
|
#####################################
|
||||||
# Node / NVM:
|
# Node / NVM:
|
||||||
#####################################
|
#####################################
|
||||||
@ -116,13 +97,13 @@ ARG INSTALL_NODE=true
|
|||||||
ENV INSTALL_NODE ${INSTALL_NODE}
|
ENV INSTALL_NODE ${INSTALL_NODE}
|
||||||
RUN if [ ${INSTALL_NODE} = true ]; then \
|
RUN if [ ${INSTALL_NODE} = true ]; then \
|
||||||
# Install nvm (A Node Version Manager)
|
# Install nvm (A Node Version Manager)
|
||||||
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash \
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.3/install.sh | bash \
|
||||||
;fi
|
;fi
|
||||||
# Again check if NVM needs to be installed
|
# Again check if NVM needs to be installed
|
||||||
# I had to split this condifiton link this because when I get it inside the above if statment is refuses to work!
|
# I had to split this condition link this because when I get it inside the above if statement is refuses to work!
|
||||||
ENV if [ ${INSTALL_NODE} = true ]; then \
|
ENV if [ ${INSTALL_NODE} = true ]; then \
|
||||||
# Set the ENV
|
# Set the ENV
|
||||||
NVM_DIR=/root/.nvm \
|
NVM_DIR=/home/laradock/.nvm \
|
||||||
# Install NodeJS with NVM
|
# Install NodeJS with NVM
|
||||||
RUN . ~/.nvm/nvm.sh && \
|
RUN . ~/.nvm/nvm.sh && \
|
||||||
nvm install stable && \
|
nvm install stable && \
|
||||||
@ -131,18 +112,24 @@ ENV if [ ${INSTALL_NODE} = true ]; then \
|
|||||||
npm install -g gulp bower \
|
npm install -g gulp bower \
|
||||||
;fi
|
;fi
|
||||||
|
|
||||||
|
# Wouldn't execute when added to the RUN statement in the above block
|
||||||
|
# Source NVM when loading bash since ~/.profile isn't loaded on non-login shell
|
||||||
|
RUN if [ ${INSTALL_NODE} = true ]; then \
|
||||||
|
echo "" >> ~/.bashrc && \
|
||||||
|
echo 'export NVM_DIR="$HOME/.nvm"' >> ~/.bashrc && \
|
||||||
|
echo '[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm' >> ~/.bashrc \
|
||||||
|
;fi
|
||||||
|
|
||||||
#
|
#
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
# Final Touch
|
# Final Touch
|
||||||
#--------------------------------------------------------------------------
|
#--------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
|
||||||
# Source the bash
|
|
||||||
RUN . ~/.bashrc
|
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
|
USER root
|
||||||
RUN apt-get clean && \
|
RUN apt-get clean && \
|
||||||
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
|
# Set default work directory
|
||||||
WORKDIR /var/www/laravel
|
WORKDIR /var/www/laravel
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user