Merge branch 'multiple-projects-improvement'

* multiple-projects-improvement:
  updated env-example and removed .env.example
  complete missings
  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-16 16:10:28 -04:00
commit c00fe5d7e0
8 changed files with 235 additions and 108 deletions

1
.env
View File

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

1
.gitignore vendored
View File

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

View File

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

View File

@ -7,42 +7,39 @@ services:
applications:
image: tianon/true
volumes:
- ../:/var/www
# - ../sample/:/var/www/sample
- ${APPLICATIONS_HOST_DIR}:/var/www
### Workspace Utilities Container ###########################
workspace:
build:
context: ./workspace
args:
- INSTALL_XDEBUG=false
- INSTALL_SOAP=false
- INSTALL_MONGO=false
- INSTALL_NODE=false
- INSTALL_YARN=false
- INSTALL_DRUSH=false
- INSTALL_AEROSPIKE_EXTENSION=false
- INSTALL_V8JS_EXTENSION=false
- COMPOSER_GLOBAL_INSTALL=false
- INSTALL_WORKSPACE_SSH=false
- INSTALL_LARAVEL_ENVOY=false
- INSTALL_DEPLOYER=false
- INSTALL_LINUXBREW=false
- INSTALL_MC=false
- PUID=1000
- PGID=1000
- NODE_VERSION=stable
- YARN_VERSION=latest
- TZ=UTC
# dockerfile: Dockerfile-71
args:
- INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
- INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
- INSTALL_MONGO=${WORKSPACE_INSTALL_MONGO}
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
- INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
- INSTALL_DRUSH=${WORKSPACE_INSTALL_DRUSH}
- INSTALL_AEROSPIKE_EXTENSION=${WORKSPACE_INSTALL_AEROSPIKE_EXTENSION}
- INSTALL_V8JS_EXTENSION=${WORKSPACE_INSTALL_INSTALL_V8JS_EXTENSION}
- COMPOSER_GLOBAL_INSTALL=${WORKSPACE_COMPOSER_GLOBAL_INSTALL}
- INSTALL_WORKSPACE_SSH=${WORKSPACE_INSTALL_WORKSPACE_SSH}
- INSTALL_LARAVEL_ENVOY=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_DEPLOYER=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_LINUXBREW=${WORKSPACE_INSTALL_LARAVEL_ENVOY}
- INSTALL_MC=${WORKSPACE_INSTALL_MC}
- PUID=${WORKSPACE_PUID}
- PGID=${WORKSPACE_PGID}
- NODE_VERSION=${WORKSPACE_NODE_VERSION}
- YARN_VERSION=${WORKSPACE_TIMEZONE}
- TZ=${WORKSPACE_TIMEZONE}
volumes_from:
- applications
extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)
- "dockerhost:10.0.75.1"
- "dockerhost:${DOCKER_HOST_IP}"
ports:
- "2222:22"
- "${WORKSPACE_SSH_PORT}:22"
tty: true
### PHP-FPM Container #######################################
@ -51,19 +48,19 @@ services:
build:
context: ./php-fpm
args:
- INSTALL_XDEBUG=false
- INSTALL_SOAP=false
- 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
- GHOSTSCRIPT=false
dockerfile: Dockerfile-70
- INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
- INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
- INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
- INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
- INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
- INSTALL_AEROSPIKE_EXTENSION=${PHP_FPM_INSTALL_AEROSPIKE_EXTENSION}
- INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
- INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
dockerfile: ${PHP_FPM_DOCKER_FILE}
volumes_from:
- applications
expose:
@ -71,11 +68,9 @@ services:
depends_on:
- workspace
extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts)
- "dockerhost:10.0.75.1"
- "dockerhost:${DOCKER_HOST_IP}"
environment:
# IMPORTANT: Set the Remote Interpreter entry matching name to `laravel`
- PHP_IDE_CONFIG=serverName=laravel
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
### Nginx Server Container ##################################
@ -86,12 +81,12 @@ services:
- PHP_UPSTREAM=php-fpm
volumes_from:
- applications
volumes:
- ./logs/nginx/:/var/log/nginx
- ./nginx/sites/:/etc/nginx/sites-available
volumes:
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
ports:
- "80:80"
- "443:443"
- "${NGINX_HOST_HTTP_PORT}:80"
- "${NGINX_HOST_HTTPS_PORT}:443"
depends_on:
- php-fpm
@ -101,14 +96,14 @@ services:
build:
context: ./apache2
args:
- PHP_SOCKET=php-fpm:9000
- PHP_SOCKET=${PHP_SOCKET}
volumes_from:
- applications
volumes:
- ./logs/apache2:/var/log/apache2
- ${APACHE_HOST_LOG_PATH}:/var/log/apache2
ports:
- "80:80"
- "443:443"
- "${APACHE_HOST_HTTP_PORT}:80"
- "${APACHE_HOST_HTTPS_PORT}:443"
depends_on:
- php-fpm
@ -130,7 +125,7 @@ services:
volumes:
- minio:/export
ports:
- "9000:9000"
- "${MINIO_PORT}:9000"
environment:
MINIO_ACCESS_KEY: access
MINIO_SECRET_KEY: secretkey
@ -141,14 +136,14 @@ services:
build:
context: ./mysql
args:
- MYSQL_DATABASE=homestead
- MYSQL_USER=homestead
- MYSQL_PASSWORD=secret
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- mysql:/var/lib/mysql
ports:
- "3306:3306"
- "${MYSQL_PORT}:3306"
### MariaDB Container #######################################
@ -157,12 +152,12 @@ services:
volumes:
- mariadb:/var/lib/mysql
ports:
- "3306:3306"
- "${MARIADB_PORT}:3306"
environment:
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: ${MARIADB_DATABASE}
MYSQL_USER: ${MARIADB_USER}
MYSQL_PASSWORD: ${MARIADB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${MARIADB_PORT}
### PostgreSQL Container ####################################
@ -171,11 +166,11 @@ services:
volumes:
- postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
- "${POSTGRES_PORT}:5432"
environment:
POSTGRES_DB: homestead
POSTGRES_USER: homestead
POSTGRES_PASSWORD: secret
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
### PostgreSQL PostGis Container ############################
@ -184,11 +179,11 @@ services:
volumes:
- postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
- "${POSTGRES_PORT}:5432"
environment:
POSTGRES_DB: homestead
POSTGRES_USER: homestead
POSTGRES_PASSWORD: secret
POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
### Neo4j Container #########################################
@ -198,7 +193,7 @@ services:
- "7474:7474"
- "1337:1337"
environment:
- NEO4J_AUTH=homestead:secret
- NEO4J_AUTH=default:secret
volumes:
- neo4j:/var/lib/neo4j/data
@ -251,7 +246,7 @@ services:
volumes:
- memcached:/var/lib/memcached
ports:
- "11211:11211"
- "${MEMCACHED_HOST_PORT}:11211"
depends_on:
- php-fpm
@ -260,7 +255,7 @@ services:
beanstalkd:
build: ./beanstalkd
ports:
- "11300:11300"
- "${BEANSTALKD_HOST_PORT}:11300"
privileged: true
depends_on:
- php-fpm
@ -270,13 +265,13 @@ services:
rabbitmq:
build: ./rabbitmq
ports:
- "5672:5672"
- "15671:15671"
- "8080:15672"
- "${RABBITMQ_NODE_HOST_PORT}:5672"
- "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
- "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
privileged: true
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
depends_on:
- php-fpm
@ -312,16 +307,13 @@ services:
build: ./phpmyadmin
environment:
PMA_ARBITRARY: 1
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: ${PMA_USER}
MYSQL_PASSWORD: ${PMA_PASSWORD}
MYSQL_ROOT_PASSWORD: ${PMA_ROOT_PASSWORD}
ports:
- "8080:80"
- "${PMA_PORT}:80"
depends_on:
# for mysql container
- "mysql"
# for mariadb container
# - "mariadb"
- "${PMA_DB_ENGINE}"
### pgAdmin Container #######################################
@ -340,8 +332,8 @@ services:
- elasticsearch-data:/usr/share/elasticsearch/data
- elasticsearch-plugins:/usr/share/elasticsearch/plugins
ports:
- "9200:9200"
- "9300:9300"
- "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
- "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
depends_on:
- php-fpm
@ -370,9 +362,8 @@ services:
selenium:
build: ./selenium
ports:
- "4444:4444"
- "${SELENIUM_PORT}:4444"
volumes:
# see https://github.com/SeleniumHQ/docker-selenium#running-the-images
- /dev/shm:/dev/shm
### Volumes Setup ###########################################
@ -406,5 +397,3 @@ volumes:
driver: "local"
elasticsearch-plugins:
driver: "local"
sessions: ## nothing is connected to this (- ./data/sessions:/sessions)
driver: "local"

125
env-example Normal file
View File

@ -0,0 +1,125 @@
### Application
# Point to your application code, wish should be available at `/var/www`
APPLICATIONS_HOST_DIR=../
### PHP version (Does not apply for HHVM)
# PHP_VERSION=55
# PHP_VERSION=56
PHP_VERSION=70
### PHP interpreter
# PHP_INTERPRETER=hhvm
PHP_INTERPRETER=php-fpm
### WORKSPACE Container
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_INSTALL_MC=false
WORKSPACE_PUID=1000
WORKSPACE_PGID=1000
WORKSPACE_NODE_VERSION=stable
WORKSPACE_TIMEZONE=UTC
WORKSPACE_SSH_PORT=2222
### PHP_FPM Container
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 Container
NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTPS_PORT=433
NGINX_HOST_LOG_PATH=./logs/nginx/
NGINX_SITES_PATH=./nginx/sites/
### APACHE Container
APACHE_HOST_HTTP_PORT=80
APACHE_HOST_HTTPS_PORT=443
APACHE2_PHP_SOCKET=php-fpm:9000
APACHE_HOST_LOG_PATH=./logs/apache2
PHP_SOCKET=php-fpm:9000
### MYSQL Container
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
### MARIADB Container
MARIADB_DATABASE=default
MARIADB_USER=default
MARIADB_PASSWORD=secret
MARIADB_PORT=3306
### POSTGRES Container
POSTGRES_DB=default
POSTGRES_USER=default
POSTGRES_PASSWORD=secret
POSTGRES_PORT=5432
### RABBITMQ Container
RABBITMQ_NODE_HOST_PORT=5672
RABBITMQ_MANAGEMENT_HTTP_HOST_PORT=15672
RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT=15671
RABBITMQ_DEFAULT_USER=guest
RABBITMQ_DEFAULT_PASS=guest
### ELASTICSEARCH Container
ELASTICSEARCH_HOST_HTTP_PORT=9200
ELASTICSEARCH_HOST_TRANSPORT_PORT=9300
### MEMCACHED Container
MEMCACHED_HOST_PORT=11211
### BEANSTALKD CONSOLE
BEANSTALKD_CONSOLE_BUILD_PATH=./beanstalkd-console
BEANSTALKD_CONSOLE_CONTAINER_NAME=beanstalkd-console
BEANSTALKD_CONSOLE_HOST_PORT=2080
### BEANSTALKD Container
BEANSTALKD_HOST_PORT=11300
### SELENIUM Container
SELENIUM_PORT=4444
### MINIO Container
MINIO_PORT=9000
### PHP MY ADMIN Container
# PMA_DB_ENGINE=mariadb
PMA_DB_ENGINE=mysql
PMA_USER=default
PMA_PASSWORD=secret
PMA_ROOT_PASSWORD=secret
PMA_PORT=88
### MISC
# Replace with your Docker Host IP (will be appended to /etc/hosts)
DOCKER_HOST_IP=10.0.75.1
# The Remote Interpreter entry matching name `laradock`
PHP_IDE_CONFIG=serverName=laradock
### to be continue neo4j mongo rethinkdb redis aerospike pgadmin ...

View File

@ -6,8 +6,8 @@ ADD startup /etc/mysql/startup
RUN chown -R mysql:root /var/lib/mysql/
ARG MYSQL_DATABASE=homestead
ARG MYSQL_USER=homestead
ARG MYSQL_DATABASE=default
ARG MYSQL_USER=default
ARG MYSQL_PASSWORD=secret
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
#####################################
# Codeigniter Modifications:
# Mysqli Modifications:
#####################################
ARG CODEIGNITER=false
RUN if [ ${CODEIGNITER} = true ]; then \
# Install Codeigniter PHP extentions requirements
docker-php-ext-install mysqli && \
ARG INSTALL_MYSQLI=false
RUN if [ ${INSTALL_MYSQLI} = true ]; then \
docker-php-ext-install mysqli \
;fi
#####################################
# Tokenizer Modifications:
#####################################
ARG INSTALL_TOKENIZER=false
RUN if [ ${INSTALL_TOKENIZER} = true ]; then \
docker-php-ext-install tokenizer \
;fi

View File

@ -176,13 +176,19 @@ RUN if [ ${INSTALL_OPCACHE} = true ]; then \
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
RUN if [ ${CODEIGNITER} = true ]; then \
# Install Codeigniter PHP extentions requirements
docker-php-ext-install mysqli && \
ARG INSTALL_TOKENIZER=false
RUN if [ ${INSTALL_TOKENIZER} = true ]; then \
docker-php-ext-install tokenizer \
;fi