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 .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,33 +15,31 @@ 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 - INSTALL_MC=${WORKSPACE_INSTALL_MC}
- PUID=1000 - PUID=${WORKSPACE_PUID}
- PGID=1000 - PGID=${WORKSPACE_PGID}
- NODE_VERSION=stable - NODE_VERSION=${WORKSPACE_NODE_VERSION}
- YARN_VERSION=latest - YARN_VERSION=${WORKSPACE_TIMEZONE}
- TZ=UTC - TZ=${WORKSPACE_TIMEZONE}
# dockerfile: Dockerfile-71
volumes_from: volumes_from:
- applications - applications
extra_hosts: extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts) - "dockerhost:${DOCKER_HOST_IP}"
- "dockerhost:10.0.75.1"
ports: ports:
- "2222:22" - "${WORKSPACE_SSH_PORT}:22"
tty: true tty: true
### PHP-FPM Container ####################################### ### PHP-FPM Container #######################################
@ -51,19 +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}
- GHOSTSCRIPT=false - INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
dockerfile: Dockerfile-70 dockerfile: ${PHP_FPM_DOCKER_FILE}
volumes_from: volumes_from:
- applications - applications
expose: expose:
@ -71,11 +68,9 @@ services:
depends_on: depends_on:
- workspace - workspace
extra_hosts: extra_hosts:
# IMPORTANT: Replace with your Docker Host IP (will be appended to /etc/hosts) - "dockerhost:${DOCKER_HOST_IP}"
- "dockerhost:10.0.75.1"
environment: environment:
# IMPORTANT: Set the Remote Interpreter entry matching name to `laravel` - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
- PHP_IDE_CONFIG=serverName=laravel
### Nginx Server Container ################################## ### Nginx Server Container ##################################
@ -87,11 +82,11 @@ 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" - "${NGINX_HOST_HTTP_PORT}:80"
- "443:443" - "${NGINX_HOST_HTTPS_PORT}:443"
depends_on: depends_on:
- php-fpm - php-fpm
@ -101,14 +96,14 @@ services:
build: build:
context: ./apache2 context: ./apache2
args: args:
- PHP_SOCKET=php-fpm:9000 - PHP_SOCKET=${PHP_SOCKET}
volumes_from: volumes_from:
- applications - applications
volumes: volumes:
- ./logs/apache2:/var/log/apache2 - ${APACHE_HOST_LOG_PATH}:/var/log/apache2
ports: ports:
- "80:80" - "${APACHE_HOST_HTTP_PORT}:80"
- "443:443" - "${APACHE_HOST_HTTPS_PORT}:443"
depends_on: depends_on:
- php-fpm - php-fpm
@ -130,7 +125,7 @@ services:
volumes: volumes:
- minio:/export - minio:/export
ports: ports:
- "9000:9000" - "${MINIO_PORT}:9000"
environment: environment:
MINIO_ACCESS_KEY: access MINIO_ACCESS_KEY: access
MINIO_SECRET_KEY: secretkey MINIO_SECRET_KEY: secretkey
@ -141,14 +136,14 @@ services:
build: build:
context: ./mysql context: ./mysql
args: args:
- MYSQL_DATABASE=homestead - MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=homestead - MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=secret - MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=root - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes: volumes:
- mysql:/var/lib/mysql - mysql:/var/lib/mysql
ports: ports:
- "3306:3306" - "${MYSQL_PORT}:3306"
### MariaDB Container ####################################### ### MariaDB Container #######################################
@ -157,12 +152,12 @@ services:
volumes: volumes:
- mariadb:/var/lib/mysql - mariadb:/var/lib/mysql
ports: ports:
- "3306:3306" - "${MARIADB_PORT}:3306"
environment: environment:
MYSQL_DATABASE: homestead MYSQL_DATABASE: ${MARIADB_DATABASE}
MYSQL_USER: homestead MYSQL_USER: ${MARIADB_USER}
MYSQL_PASSWORD: secret MYSQL_PASSWORD: ${MARIADB_PASSWORD}
MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_PASSWORD: ${MARIADB_PORT}
### PostgreSQL Container #################################### ### PostgreSQL Container ####################################
@ -171,11 +166,11 @@ services:
volumes: volumes:
- postgres:/var/lib/postgresql/data - postgres:/var/lib/postgresql/data
ports: ports:
- "5432:5432" - "${POSTGRES_PORT}:5432"
environment: environment:
POSTGRES_DB: homestead POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: homestead POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: secret POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
### PostgreSQL PostGis Container ############################ ### PostgreSQL PostGis Container ############################
@ -184,11 +179,11 @@ services:
volumes: volumes:
- postgres:/var/lib/postgresql/data - postgres:/var/lib/postgresql/data
ports: ports:
- "5432:5432" - "${POSTGRES_PORT}:5432"
environment: environment:
POSTGRES_DB: homestead POSTGRES_DB: ${POSTGRES_DB}
POSTGRES_USER: homestead POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: secret POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
### Neo4j Container ######################################### ### Neo4j Container #########################################
@ -198,7 +193,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
@ -251,7 +246,7 @@ services:
volumes: volumes:
- memcached:/var/lib/memcached - memcached:/var/lib/memcached
ports: ports:
- "11211:11211" - "${MEMCACHED_HOST_PORT}:11211"
depends_on: depends_on:
- php-fpm - php-fpm
@ -260,7 +255,7 @@ services:
beanstalkd: beanstalkd:
build: ./beanstalkd build: ./beanstalkd
ports: ports:
- "11300:11300" - "${BEANSTALKD_HOST_PORT}:11300"
privileged: true privileged: true
depends_on: depends_on:
- php-fpm - php-fpm
@ -270,13 +265,13 @@ services:
rabbitmq: rabbitmq:
build: ./rabbitmq build: ./rabbitmq
ports: ports:
- "5672:5672" - "${RABBITMQ_NODE_HOST_PORT}:5672"
- "15671:15671" - "${RABBITMQ_MANAGEMENT_HTTP_HOST_PORT}:15672"
- "8080:15672" - "${RABBITMQ_MANAGEMENT_HTTPS_HOST_PORT}:15671"
privileged: true privileged: true
environment: environment:
RABBITMQ_DEFAULT_USER: guest RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER}
RABBITMQ_DEFAULT_PASS: guest RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS}
depends_on: depends_on:
- php-fpm - php-fpm
@ -312,16 +307,13 @@ services:
build: ./phpmyadmin build: ./phpmyadmin
environment: environment:
PMA_ARBITRARY: 1 PMA_ARBITRARY: 1
MYSQL_USER: homestead MYSQL_USER: ${PMA_USER}
MYSQL_PASSWORD: secret MYSQL_PASSWORD: ${PMA_PASSWORD}
MYSQL_ROOT_PASSWORD: root MYSQL_ROOT_PASSWORD: ${PMA_ROOT_PASSWORD}
ports: ports:
- "8080:80" - "${PMA_PORT}:80"
depends_on: depends_on:
# for mysql container - "${PMA_DB_ENGINE}"
- "mysql"
# for mariadb container
# - "mariadb"
### pgAdmin Container ####################################### ### pgAdmin Container #######################################
@ -340,8 +332,8 @@ services:
- elasticsearch-data:/usr/share/elasticsearch/data - elasticsearch-data:/usr/share/elasticsearch/data
- elasticsearch-plugins:/usr/share/elasticsearch/plugins - elasticsearch-plugins:/usr/share/elasticsearch/plugins
ports: ports:
- "9200:9200" - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
- "9300:9300" - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
depends_on: depends_on:
- php-fpm - php-fpm
@ -370,9 +362,8 @@ services:
selenium: selenium:
build: ./selenium build: ./selenium
ports: ports:
- "4444:4444" - "${SELENIUM_PORT}:4444"
volumes: volumes:
# see https://github.com/SeleniumHQ/docker-selenium#running-the-images
- /dev/shm:/dev/shm - /dev/shm:/dev/shm
### Volumes Setup ########################################### ### Volumes Setup ###########################################
@ -406,5 +397,3 @@ volumes:
driver: "local" driver: "local"
elasticsearch-plugins: elasticsearch-plugins:
driver: "local" 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/ 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