diff --git a/docker-compose-development.rendertron.yml b/docker-compose-development.rendertron.yml new file mode 100644 index 0000000000000000000000000000000000000000..422c741352cf10159cf72486bd25a773942405dd --- /dev/null +++ b/docker-compose-development.rendertron.yml @@ -0,0 +1,29 @@ +version: "3" + +services: + rendertron: + context: ./docker/dev/ + dockerfile: Dockerfile-rendertron + + proxy: + context: ./docker/dev/ + dockerfile: Dockerfile-nginx + volumes: + - ./docker/dev/nginx-development-proxy.conf:/etc/nginx/conf.d/default.conf + - /app/dist/fr:/usr/share/nginx/html/ + - /app/dist/en:/usr/share/nginx/html/en/ + + web-app: + restart: unless-stopped + build: . + image: registry.forge.grandlyon.com/web-et-numerique/web-et-numerique-internet/data.grandlyon.com/web-portal/components/custom-apps/web-app:${TAG} + volumes: + - ./nginx.conf.template:/etc/nginx/nginx.conf.template + ports: + - ${WEB_APP_BIND_PORT}:8080 + command: > + /bin/sh -c + 'sed "s#<MATOMO_SITE_ID>#$MATOMO_SITE_ID#g; s#<MATOMO_SERVER_URL>#$MATOMO_SERVER_URL#g" /etc/nginx/nginx.conf.template + > /etc/nginx/conf.d/default.conf + && nginx -g "daemon off;"' + diff --git a/docker/dev/Dockerfile-nginx b/docker/dev/Dockerfile-nginx new file mode 100644 index 0000000000000000000000000000000000000000..4eb4435b4f47c608352f56da2b5a001e5ceb975a --- /dev/null +++ b/docker/dev/Dockerfile-nginx @@ -0,0 +1,9 @@ +FROM nginx + +RUN apt-get update + +RUN apt-get --assume-yes install nginx-extras + +RUN rm /etc/nginx/conf.d/* + +RUN ls -l /usr/share/nginx/html diff --git a/docker/dev/nginx-development-proxy.conf b/docker/dev/nginx-development-proxy.conf new file mode 100644 index 0000000000000000000000000000000000000000..c18b00639f761c340bc2a7f03f395f5e6dd6639d --- /dev/null +++ b/docker/dev/nginx-development-proxy.conf @@ -0,0 +1,61 @@ +server { + # staging server is listening on the port 8180 + listen 8180; + server_name _; + root /usr/share/nginx/html/; + + set $en 0; + + # rule serving the fr build + location / { + + try_files $uri $uri/ @prerender; + + # try_files $uri$args /index.html; => used in the prerender =0 block + + } + + # Rule serving the en build + location /en { + #try_files $uri$args /en/index.html; + set $en 1; + } + + # redirecting the /fr url to the new location of the fr build + location ~ ^/fr(.*)$ { + return 301 $scheme://$http_host$1$is_args$args; + } + + location @prerender { + #proxy_set_header X-Prerender-Token YOUR_TOKEN; + set $prerender 0; + if ($http_user_agent ~* "googlebot|yahoo|bingbot|baiduspider|yandex|yeti|yodaobot|gigabot|ia_archiver|facebookexternalhit|twitterbot|linkedinbot|developers\.google\.com") { + set $prerender 1; + } + if ($args ~ "_escaped_fragment_|prerender=1") { + set $prerender 1; + } + if ($http_user_agent ~ "Prerender") { + set $prerender 0; + } + + if ($prerender = 1) { + rewrite .* /render/$scheme://$server_name$request_uri break; + proxy_pass http://rendertron:8083; + } + if ($prerender = 0) { + if ($en = 0) { + rewrite .* /index.html break; + sub_filter '<html lang="en">' '<html lang="fr">'; + } + else { + rewrite .*/en/index.html break; + } + } + } + + #location /robots.txt { + # rewrite ^ /fr/robots.txt; + #} + +}