diff --git a/.env.dist b/.env.dist index e42ff9d..048ce25 100644 --- a/.env.dist +++ b/.env.dist @@ -1,11 +1,19 @@ +# Currently you can choose between flow and symfony +PROJECT_TYPE=flow + +# Choose your custom project identifier +# This is currently used for the docker images PROJECT_IDENTIFIER=project +# MySQL Settings MYSQL_ROOT_PASSWORD=super-secret MYSQL_DATABASE=project MYSQL_USER=project MYSQL_PASSWORD=secret +# Nginx Settings NGINX_PORT=1234 NGINX_DOCUMENT_ROOT=/data/Web +# Custom Settings FLOW_CONTEXT=Development/Docker \ No newline at end of file diff --git a/Docker/nginx/Dockerfile b/Docker/nginx/Dockerfile index 3c55945..9bf6b12 100644 --- a/Docker/nginx/Dockerfile +++ b/Docker/nginx/Dockerfile @@ -1,6 +1,8 @@ FROM zeroboh/nginx:1.11-alpine -COPY ./default.conf.template /default.conf.template +ARG PROJECT_TYPE + +COPY ./${PROJECT_TYPE}.conf.template /default.conf.template COPY ./docker-entrypoint /docker-entrypoint COPY ./docker-entrypoints /docker-entrypoints diff --git a/Docker/nginx/default.conf.template b/Docker/nginx/flow.conf.template similarity index 100% rename from Docker/nginx/default.conf.template rename to Docker/nginx/flow.conf.template diff --git a/Docker/nginx/symfony.conf.template b/Docker/nginx/symfony.conf.template new file mode 100644 index 0000000..c179b13 --- /dev/null +++ b/Docker/nginx/symfony.conf.template @@ -0,0 +1,55 @@ +server { + server_name localhost; + listen ${NGINX_PORT}; + root /data/web; + + location / { + # try to serve file directly, fallback to app.php + try_files $uri /app.php$is_args$args; + } + # DEV + # This rule should only be placed on your development environment + # In production, don't include this and don't deploy app_dev.php or config.php + location ~ ^/(app_dev|config)\.php(/|$) { + fastcgi_pass php:9000; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + # When you are using symlinks to link the document root to the + # current version of your application, you should pass the real + # application path instead of the path to the symlink to PHP + # FPM. + # Otherwise, PHP's OPcache may not properly detect changes to + # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 + # for more information). + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + } + # PROD + location ~ ^/app\.php(/|$) { + fastcgi_pass php:9000; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + # When you are using symlinks to link the document root to the + # current version of your application, you should pass the real + # application path instead of the path to the symlink to PHP + # FPM. + # Otherwise, PHP's OPcache may not properly detect changes to + # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 + # for more information). + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + # Prevents URIs that include the front controller. This will 404: + # http://domain.tld/app.php/some-path + # Remove the internal directive to allow URIs like this + internal; + } + + # return 404 for all other php files not matching the front controller + # this prevents access to other php files you don't want to be accessible. + location ~ \.php$ { + return 404; + } + + error_log /var/log/nginx/project_error.log; + access_log /var/log/nginx/project_access.log; +} \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index deade31..e498d5a 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "2" +version: "3" services: @@ -14,7 +14,10 @@ services: - "./Data:/data" nginx: - build: ./Docker/nginx + build: + context: "./Docker/nginx" + args: + PROJECT_TYPE: "${PROJECT_TYPE}" image: ${PROJECT_IDENTIFIER}/nginx:1.11-alpine ports: - "${NGINX_PORT}:${NGINX_PORT}" @@ -24,8 +27,8 @@ services: NGINX_DOCUMENT_ROOT: "${NGINX_DOCUMENT_ROOT}" depends_on: - "php" - volumes_from: - - "php" + volumes: + - "./Data:/data" redis: build: ./Docker/redis