Merge branch 'multiple_frameworks' of https://github.com/Mvzundert/laradock into Mvzundert-multiple_frameworks

* 'multiple_frameworks' of https://github.com/Mvzundert/laradock:
  Seperated mysqli and tokenizer as seperate options without putting them under code igniter
  Apache should just go to /var/www not /var/www/public when supporting multiple projects
  fixed example and docker-compose.yml
  Fixed php-fpm variables and example
  Split up mysqli and tokenizer
  Removed homestead entirely this time
  Removed homestead entirely this time
  Removed Homestead reference in all DB containers
  Removed reference to homestead
  Fixed timezone issue in docker-compose.yml
  Added NGINX from env file and updated env-example
  Updated PHP-FPM container to accept .env variables
  Added workspace from env file and updated env-example
  Removed .env file
  Added env-example and adjusted docker-compose yml to support new env file
  Updated gitignore
This commit is contained in:
Mahmoud Zalt 2017-03-13 19:29:30 -04:00
commit 7f27073a4e
8 changed files with 241 additions and 62 deletions

1
.env
View File

@ -1 +0,0 @@
COMPOSE_CONVERT_WINDOWS_PATHS=1

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
.idea .idea
/logs /logs
/data /data
.env

View File

@ -6,11 +6,11 @@ ARG PHP_SOCKET=php-fpm:9000
ENV WEB_PHP_SOCKET=$PHP_SOCKET ENV WEB_PHP_SOCKET=$PHP_SOCKET
ENV WEB_DOCUMENT_ROOT=/var/www/public ENV WEB_DOCUMENT_ROOT=/var/www/
EXPOSE 80 443 EXPOSE 80 443
WORKDIR /var/www/public WORKDIR /var/www/
ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"] ENTRYPOINT ["/opt/docker/bin/entrypoint.sh"]

View File

@ -7,8 +7,7 @@ services:
applications: applications:
image: tianon/true image: tianon/true
volumes: volumes:
- ../:/var/www - ${APPLICATIONS_HOST_DIR}:/var/www
# - ../sample/:/var/www/sample
### Workspace Utilities Container ########################### ### Workspace Utilities Container ###########################
@ -16,25 +15,24 @@ services:
build: build:
context: ./workspace context: ./workspace
args: args:
- INSTALL_XDEBUG=false - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
- INSTALL_SOAP=false - INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
- INSTALL_MONGO=false - INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
- INSTALL_NODE=false - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
- INSTALL_YARN=false - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
- INSTALL_DRUSH=false - INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
- INSTALL_AEROSPIKE_EXTENSION=false - INSTALL_AEROSPIKE_EXTENSION=${WORKSPACE_INSTALL_AEROSPIKE_EXTENSION}
- INSTALL_V8JS_EXTENSION=false - INSTALL_V8JS_EXTENSION=${WORKSPACE_INSTALL_INSTALL_V8JS_EXTENSION}
- COMPOSER_GLOBAL_INSTALL=false - COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
- INSTALL_WORKSPACE_SSH=false - INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
- INSTALL_LARAVEL_ENVOY=false - INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_DEPLOYER=false - INSTALL_DEPLOYER=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_LINUXBREW=false - INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_MC=false - PUID=${WORKSPACE_PUID}
- PUID=1000 - PGID=${WORKSPACE_PGID}
- PGID=1000 - NODE_VERSION=${WORKSPACE_NODE_VERSION}
- NODE_VERSION=stable - YARN_VERSION=${WORKSPACE_TIMEZONE}
- YARN_VERSION=latest - TZ=${WORKSPACE_TIMEZONE}
- TZ=UTC
volumes_from: volumes_from:
- applications - applications
extra_hosts: extra_hosts:
@ -50,18 +48,19 @@ services:
build: build:
context: ./php-fpm context: ./php-fpm
args: args:
- INSTALL_XDEBUG=false - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
- INSTALL_SOAP=false - INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
- INSTALL_MONGO=false - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
- INSTALL_ZIP_ARCHIVE=false - INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
- INSTALL_BCMATH=false - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- INSTALL_PHPREDIS=false - INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
- INSTALL_MEMCACHED=false - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- INSTALL_OPCACHE=false - INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
- INSTALL_EXIF=false - INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
- INSTALL_AEROSPIKE_EXTENSION=false - INSTALL_AEROSPIKE_EXTENSION=${PHP_FPM_INSTALL_AEROSPIKE_EXTENSION}
- CODEIGNITER=false - INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
dockerfile: Dockerfile-70 - INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
dockerfile: ${PHP_FPM_DOCKER_FILE}
volumes_from: volumes_from:
- applications - applications
expose: expose:
@ -85,8 +84,8 @@ services:
volumes_from: volumes_from:
- applications - applications
volumes: volumes:
- ./logs/nginx/:/var/log/nginx - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ./nginx/sites/:/etc/nginx/sites-available - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
ports: ports:
- "80:80" - "80:80"
- "443:443" - "443:443"
@ -139,8 +138,8 @@ services:
build: build:
context: ./mysql context: ./mysql
args: args:
- MYSQL_DATABASE=homestead - MYSQL_DATABASE=default
- MYSQL_USER=homestead - MYSQL_USER=default
- MYSQL_PASSWORD=secret - MYSQL_PASSWORD=secret
- MYSQL_ROOT_PASSWORD=root - MYSQL_ROOT_PASSWORD=root
volumes: volumes:
@ -157,8 +156,8 @@ services:
ports: ports:
- "3306:3306" - "3306:3306"
environment: environment:
MYSQL_DATABASE: homestead MYSQL_DATABASE: default
MYSQL_USER: homestead MYSQL_USER: default
MYSQL_PASSWORD: secret MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_PASSWORD: root
@ -171,8 +170,8 @@ services:
ports: ports:
- "5432:5432" - "5432:5432"
environment: environment:
POSTGRES_DB: homestead POSTGRES_DB: default
POSTGRES_USER: homestead POSTGRES_USER: default
POSTGRES_PASSWORD: secret POSTGRES_PASSWORD: secret
### PostgreSQL PostGis Container ############################ ### PostgreSQL PostGis Container ############################
@ -184,8 +183,8 @@ services:
ports: ports:
- "5432:5432" - "5432:5432"
environment: environment:
POSTGRES_DB: homestead POSTGRES_DB: default
POSTGRES_USER: homestead POSTGRES_USER: default
POSTGRES_PASSWORD: secret POSTGRES_PASSWORD: secret
### Neo4j Container ######################################### ### Neo4j Container #########################################
@ -196,7 +195,7 @@ services:
- "7474:7474" - "7474:7474"
- "1337:1337" - "1337:1337"
environment: environment:
- NEO4J_AUTH=homestead:secret - NEO4J_AUTH=default:secret
volumes: volumes:
- neo4j:/var/lib/neo4j/data - neo4j:/var/lib/neo4j/data
@ -310,7 +309,7 @@ services:
build: ./phpmyadmin build: ./phpmyadmin
environment: environment:
PMA_ARBITRARY: 1 PMA_ARBITRARY: 1
MYSQL_USER: homestead MYSQL_USER: default
MYSQL_PASSWORD: secret MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_PASSWORD: root
ports: ports:

167
env-example Normal file
View File

@ -0,0 +1,167 @@
##################
# DOCKER COMPOSE #
# ################
DOCKER_HOST_IP=10.0.75.1
# Switch between PHP and HHVM interpreter
# PHP_INTERPRETER=hhvm
PHP_INTERPRETER=php-fpm
# Switch between supported PHP versions... does not apply for HHVM.
# Please see composer.json in Laravel Framework for the minimum Php Version
#PHP_VERSION=55
#PHP_VERSION=56
PHP_VERSION=70
# APPLICATIONS
APPLICATIONS_HOST_DIR=../
APPLICATIONS_IMAGE_NAME=tianon/true
APPLICATIONS_CONTAINER_NAME=applications
# WORKSPACE
WORKSPACE_INSTALL_XDEBUG=false
WORKSPACE_INSTALL_SOAP=false
WORKSPACE_INSTALL_MONGO=false
WORKSPACE_INSTALL_NODE=false
WORKSPACE_INSTALL_YARN=false
WORKSPACE_INSTALL_DRUSH=false
WORKSPACE_INSTALL_AEROSPIKE_EXTENSION=false
WORKSPACE_INSTALL_INSTALL_V8JS_EXTENSION=false
WORKSPACE_COMPOSER_GLOBAL_INSTALL=false
WORKSPACE_INSTALL_WORKSPACE_SSH=false
WORKSPACE_INSTALL_LARAVEL_ENVOY=false
WORKSPACE_INSTALL_DEPLOYER=false
WORKSPACE_INSTALL_LINUXBREW=false
WORKSPACE_PUID=1000
WORKSPACE_PGID=1000
WORKSPACE_NODE_VERSION=stable
WORKSPACE_TIMEZONE=UTC
WORKSPACE_SSH_PORT=2222
# PHP_FPM
PHP_FPM_DOCKER_FILE=Dockerfile-70
PHP_FPM_INSTALL_XDEBUG=false
PHP_FPM_INSTALL_MONGO=false
PHP_FPM_INSTALL_SOAP=false
PHP_FPM_INSTALL_ZIP_ARCHIVE=false
PHP_FPM_INSTALL_BCMATH=false
PHP_FPM_INSTALL_PHPREDIS=false
PHP_FPM_INSTALL_MEMCACHED=false
PHP_FPM_INSTALL_OPCACHE=false
PHP_FPM_INSTALL_EXIF=false
PHP_FPM_INSTALL_AEROSPIKE_EXTENSION=false
PHP_FPM_INSTALL_MYSQLI=false
PHP_FPM_INSTALL_TOKENIZER=false
# NGINX
NGINX_HOST_HTTP_PORT=8080
NGINX_HOST_HTTPS_PORT=8433
NGINX_HOST_LOG_PATH=./logs/nginx/
NGINX_SITES_PATH=./nginx/sites/
# APACHE
APACHE2_BUILD_PATH=./apache2
APACHE2_CONTAINER_NAME=apache2
APACHE_HOST_HTTP_PORT=7080
APACHE_HOST_HTTPS_PORT=7443
APACHE2_PHP_SOCKET=php-fpm:9000
APACHE_HOST_LOG_PATH=./logs/apache2
# HHVM
HHVM_BUILD_PATH=./hhvm
HHVM_CONTAINER_NAME=hhvm
HHVM_HOST_PORT=9000
# MYSQL
MYSQL_BUILD_PATH=./mysql
MYSQL_CONTAINER_NAME=mysql
MYSQL_HOST_PORT=3307
MYSQL_ROOT_PASSWORD=root
# MEMCACHED
MEMCACHED_BUILD_PATH=./memcached
MEMCACHED_CONTAINER_NAME=memcached
MEMCACHED_HOST_PORT=11211
# BEANSTALKD
BEANSTALKD_BUILD_PATH=./beanstalkd
BEANSTALKD_CONTAINER_NAME=beanstalkd
BEANSTALKD_HOST_PORT=11300
# BEANSTALKD CONSOLE
BEANSTALKD_CONSOLE_BUILD_PATH=./beanstalkd-console
BEANSTALKD_CONSOLE_CONTAINER_NAME=beanstalkd-console
BEANSTALKD_CONSOLE_HOST_PORT=2080
# RABBITMQ
RABBITMQ_BUILD_PATH=./rabbitmq
RABBITMQ_CONTAINER_NAME=rabbitmq
RABBITMQ_NODE_HOST_PORT=5672
RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671
RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672
RABBITMQ_DEFAULT_USER=guest
RABBITMQ_DEFAULT_PASS=guest
# ELASTICSEARCH
ELASTICSEARCH_BUILD_PATH=./elasticsearch/versions/2
ELASTICSEARCH_CONTAINER_NAME=elasticsearch
ELASTICSEARCH_HOST_HTTP_PORT=9200
ELASTICSEARCH_HOST_TRANSPORT_PORT=9300
####################
# LARAVEL SPECIFIC #
# ##################
# APP
APP_ENV=local
APP_KEY=base64:FeZgPe6Pqm7dOCy7Sx0P/PQ9ICMuwAsHLms7DUOxCkI=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
# DATABASE
DB_CONNECTION=mysql
# Laravel Original: DB_HOST=127.0.0.1
# must match the service name or container name.
# so if we want to use mariadb it must look like:
# DB_HOST=mariadb
DB_HOST=mysql
# IMPORTANT:
# - ports are defined in docker-compose.yml like HOST_PORT:CONTAINER_PORT
# - DB_PORT=3306 represents the CONTAINER_PORT not the HOST_PORT
#
# This means that this should not be changed unless you have also tweaked the database image created by
# docker-compose.yml.
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
# DRIVERS
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
# REDIS
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
# MAIL
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
# PUSHER
PUSHER_APP_ID=
PUSHER_KEY=
PUSHER_SECRET=

View File

@ -6,8 +6,8 @@ ADD startup /etc/mysql/startup
RUN chown -R mysql:root /var/lib/mysql/ RUN chown -R mysql:root /var/lib/mysql/
ARG MYSQL_DATABASE=homestead ARG MYSQL_DATABASE=default
ARG MYSQL_USER=homestead ARG MYSQL_USER=default
ARG MYSQL_PASSWORD=secret ARG MYSQL_PASSWORD=secret
ARG MYSQL_ROOT_PASSWORD=root ARG MYSQL_ROOT_PASSWORD=root

View File

@ -145,13 +145,20 @@ RUN if [ ${INSTALL_OPCACHE} = true ]; then \
COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini
##################################### #####################################
# Codeigniter Modifications: # Mysqli Modifications:
##################################### #####################################
ARG CODEIGNITER=false ARG INSTALL_MYSQLI=false
RUN if [ ${CODEIGNITER} = true ]; then \ RUN if [ ${INSTALL_MYSQLI} = true ]; then \
# Install Codeigniter PHP extentions requirements docker-php-ext-install mysqli \
docker-php-ext-install mysqli && \ ;fi
#####################################
# Tokenizer Modifications:
#####################################
ARG INSTALL_TOKENIZER=false
RUN if [ ${INSTALL_TOKENIZER} = true ]; then \
docker-php-ext-install tokenizer \ docker-php-ext-install tokenizer \
;fi ;fi

View File

@ -176,13 +176,19 @@ RUN if [ ${INSTALL_OPCACHE} = true ]; then \
COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini COPY ./opcache.ini /usr/local/etc/php/conf.d/opcache.ini
##################################### #####################################
# Codeigniter Modifications: # Mysqli Modifications:
#####################################
ARG INSTALL_MYSQLI=false
RUN if [ ${INSTALL_MYSQLI} = true ]; then \
docker-php-ext-install mysqli \
;fi
#####################################
# Tokenizer Modifications:
##################################### #####################################
ARG CODEIGNITER=false ARG INSTALL_TOKENIZER=false
RUN if [ ${CODEIGNITER} = true ]; then \ RUN if [ ${INSTALL_TOKENIZER} = true ]; then \
# Install Codeigniter PHP extentions requirements
docker-php-ext-install mysqli && \
docker-php-ext-install tokenizer \ docker-php-ext-install tokenizer \
;fi ;fi