浏览代码

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
Mahmoud Zalt 8 年之前
父节点
当前提交
c00fe5d7e0
共有 8 个文件被更改,包括 235 次插入108 次删除
  1. 0 1
      .env
  2. 1 0
      .gitignore
  3. 2 2
      apache2/Dockerfile
  4. 82 93
      docker-compose.yml
  5. 125 0
      env-example
  6. 2 2
      mysql/Dockerfile
  7. 12 5
      php-fpm/Dockerfile-56
  8. 11 5
      php-fpm/Dockerfile-70

+ 0 - 1
.env

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

+ 1 - 0
.gitignore

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

+ 2 - 2
apache2/Dockerfile

@@ -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"]
 

+ 82 - 93
docker-compose.yml

@@ -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 - 0
env-example

@@ -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 ...

+ 2 - 2
mysql/Dockerfile

@@ -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
 

+ 12 - 5
php-fpm/Dockerfile-56

@@ -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
 

+ 11 - 5
php-fpm/Dockerfile-70

@@ -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