From 93504a714dd5d0678dfec05e86a50253f3f0d28d Mon Sep 17 00:00:00 2001 From: larryeitel Date: Mon, 15 Aug 2016 15:14:05 -0600 Subject: [PATCH] Proof of concept - LaraDock hosting multiple sites --- .gitignore | 3 ++- docker-compose.yml | 11 +++++++++++ nginx/Dockerfile | 2 +- nginx/nginx.conf | 1 + nginx/{ => sites}/laravel.conf | 2 ++ nginx/sites/site_a.conf | 28 ++++++++++++++++++++++++++++ nginx/sites/site_b.conf | 28 ++++++++++++++++++++++++++++ 7 files changed, 73 insertions(+), 2 deletions(-) rename nginx/{ => sites}/laravel.conf (95%) create mode 100644 nginx/sites/site_a.conf create mode 100644 nginx/sites/site_b.conf diff --git a/.gitignore b/.gitignore index 28b085f1..00571d72 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea /logs /data -.env \ No newline at end of file +.env diff --git a/docker-compose.yml b/docker-compose.yml index a2313182..1bb1c49c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -203,6 +203,17 @@ services: volumes: - ../:/var/www/laravel + # By default, site_a and site_b are mirroring the parent Laravel app. + # This is because the nginx container has these domains + # enabled to demonstrate how to support multiple sites + - ../:/var/www/site_a + - ../:/var/www/site_b + + # This demonstrates example of where you may mount sites + # - ../../site_a/:/var/www/site_a + # - ../../site_b/:/var/www/site_b + + ### Databases Data Container ################################ volumes_data: diff --git a/nginx/Dockerfile b/nginx/Dockerfile index f9bfc1ba..2aece34b 100644 --- a/nginx/Dockerfile +++ b/nginx/Dockerfile @@ -3,7 +3,7 @@ FROM nginx:alpine MAINTAINER Mahmoud Zalt ADD nginx.conf /etc/nginx/ -ADD laravel.conf /etc/nginx/conf.d/laravel.conf +COPY sites/*.conf /etc/nginx/sites-available/ ARG PHP_UPSTREAM=php-fpm diff --git a/nginx/nginx.conf b/nginx/nginx.conf index cc7fa68e..3daeb998 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -24,5 +24,6 @@ http { gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; + include /etc/nginx/sites-available/*; open_file_cache max=100; } diff --git a/nginx/laravel.conf b/nginx/sites/laravel.conf similarity index 95% rename from nginx/laravel.conf rename to nginx/sites/laravel.conf index 432c2a71..c1803830 100644 --- a/nginx/laravel.conf +++ b/nginx/sites/laravel.conf @@ -1,7 +1,9 @@ server { + listen 80 default_server; listen [::]:80 default_server ipv6only=on; + server_name laravel; root /var/www/laravel/public; index index.php index.html index.htm; diff --git a/nginx/sites/site_a.conf b/nginx/sites/site_a.conf new file mode 100644 index 00000000..04eec45b --- /dev/null +++ b/nginx/sites/site_a.conf @@ -0,0 +1,28 @@ +server { + + listen 80; + listen [::]:80; + + server_name site_a; + root /var/www/site_a/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} + + + diff --git a/nginx/sites/site_b.conf b/nginx/sites/site_b.conf new file mode 100644 index 00000000..e1539cd1 --- /dev/null +++ b/nginx/sites/site_b.conf @@ -0,0 +1,28 @@ +server { + + listen 80; + listen [::]:80; + + server_name site_b; + root /var/www/site_b/public; + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php$is_args$args; + } + + location ~ \.php$ { + try_files $uri /index.php =404; + fastcgi_pass php-upstream; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.ht { + deny all; + } +} + + +