Geotrek-admin icon indicating copy to clipboard operation
Geotrek-admin copied to clipboard

Docker - dans le fichier .env En changeant uniquement ENV=dev par ENV=prod le style disparait

Open bouchetfrancois opened this issue 3 years ago • 2 comments

bonjour dans le fichier .env le passage de la variable ENV=dev à ENV=prod me pose problème, , le chargement du style disparait. Quelqu'un saurait il pourquoi?

avec ENV=dev

image

avec ENV=prod

image

fichier #########.env

GEOTREK_VERSION=latest SERVER_NAME=geotrekprod.lpo.fr ENV=prod POSTGRES_HOST=postgres POSTGRES_PORT=5432 POSTGRES_USER=geotrek POSTGRES_PASSWORD=######### POSTGRES_DB=geotrekdb WEB_PORT=8001 API_PORT=8002 POSTGRES_HOST_AUTH_METHOD=trust #COMPOSE_PROJECT_NAME=geotrek DOMAINS=geotrekprod.lpo.fr

fichier #########docker_compose.yml

version: "3" services:

postgres: image: postgis/postgis:11-2.5 env_file: - .env ports: - "${POSTGRES_PORT:-5432}:${POSTGRES_PORT:-5432}" volumes: - postgres:/var/lib/postgresql/data

memcached: image: memcached:1.5-alpine

redis: image: redis:5.0-alpine volumes: - redis:/data

convertit: image: makinacorpus/convertit:latest

screamshotter: image: makinacorpus/screamshotter:v2

celery: image: geotrekce/admin:${GEOTREK_VERSION:-latest} env_file: - .env volumes: - ./var:/opt/geotrek-admin/var depends_on: - memcached - redis - postgres user: ${UID:-0}:${GID:-0} command: celery -A geotrek worker -c 1

web: image: geotrekce/admin:${GEOTREK_VERSION:-latest} env_file: - .env ports: - "${WEB_PORT:-8001}:8000" volumes: - ./var:/opt/geotrek-admin/var depends_on: - memcached - redis - screamshotter - convertit - postgres user: ${UID:-0}:${GID:-0}

api: image: geotrekce/admin:${GEOTREK_VERSION:-latest} env_file: - .env ports: - "${API_PORT:-8002}:8000" volumes: - ./var:/opt/geotrek-admin/var depends_on: - memcached - redis - postgres user: ${UID:-0}:${GID:-0}

volumes: postgres: redis:

bouchetfrancois avatar May 23 '22 13:05 bouchetfrancois

Bonjour, en mode "prod" django ne sert pas les fichiers statiques (css / images / js etc). Le docker compose fourni ne s'occupe pas de la partie serveur web / proxy. il faut l'utiliser derriere un serveur qui fait proxy et qui sert ces fichiers, par exemple en installant nginx et adaptant le fichier de configuration utilisé pour l'installation de base ubuntu (ou en ajoutant un container nginx à la stack docker-compose).

Il faut adapter ce fichier, pour lui indiquer dans la section upstream l'ip et le port des container web et api, et le chemin vers les dossiers var/static et var/media

Il faut ensuite s'assurer que l'utilisateur nginx a les droits de lecture sur ces dossiers, et executer update.sh, django va "collecter" ces fichiers dans le dossier var/static, et nginx les servira, tout en transmettant le reste des requetes à l'application

submarcos avatar May 23 '22 14:05 submarcos

Merci c'est sympa, Cela explique bien pourquoi mon reverse proxy me sert correctement les fichiers statiques du site en environnement dev et pas en prod. Bonne soirée.


De : Jean-Etienne Castagnede @.> Envoyé : lundi 23 mai 2022 16:31 À : GeotrekCE/Geotrek-admin @.> Cc : Francois Bouchet @.>; Author @.> Objet : Re: [GeotrekCE/Geotrek-admin] dans le fichier .env En changeant uniquement ENV=dev par ENV=prod le style disparait (Issue #3111)

Bonjour, en mode "prod" django ne sert pas les fichiers statiques (css / images / js etc). Le docker compose fourni est surtout utilisé pour le développement, bien qu'il puisse être adapté pour la prod. il faut l'utiliser derriere un serveur qui fait proxy et qui sert ces fichiers, par exemple en installant nginx et adaptant le fichier de configuration utilisé pour l'installation de base ubuntuhttps://github.com/GeotrekCE/Geotrek-admin/blob/master/conf/nginx.conf.in (ou en ajoutant un container nginx à la stack docker-compose).

Il faut adapter ce fichier, pour lui indiquer dans la section upstream l'ip et le port des container webhttps://github.com/GeotrekCE/Geotrek-admin/blob/master/conf/nginx.conf.in#L2 et apihttps://github.com/GeotrekCE/Geotrek-admin/blob/master/conf/nginx.conf.in#L6, et le chemin vers les dossiers var/static et var/media

Il faut ensuite s'assurer que l'utilisateur nginx a les droits de lecture sur ces dossiers, et executer update.sh, django va "collecter" ces fichiers dans le dossier var/static, et nginx les servira, tout en transmettant le reste des requetes à l'application

— Reply to this email directly, view it on GitHubhttps://github.com/GeotrekCE/Geotrek-admin/issues/3111#issuecomment-1134753938, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AMNBJM6GPCRSAMYVNHBSFZTVLOJDPANCNFSM5WV4RSAA. You are receiving this because you authored the thread.Message ID: @.***>

bouchetfrancois avatar May 23 '22 15:05 bouchetfrancois