Browse Source

add mercure container

Olivier Massot 3 years ago
parent
commit
3ca866df1b

+ 5 - 0
.env.skeleton

@@ -69,3 +69,8 @@ PHPDOC_VIRTUAL_HOST=local.ap2i-doc.opentalent.fr
 
 
 #Jsdoc
 #Jsdoc
 JSDOC_VIRTUAL_HOST=local.app-doc.opentalent.fr
 JSDOC_VIRTUAL_HOST=local.app-doc.opentalent.fr
+
+# Mercure
+MERCURE_VIRTUAL_HOST=local.mercure.opentalent.fr
+MERCURE_PUBLISHER_JWT_KEY=???
+MERCURE_SUBSCRIBER_JWT_KEY=???

+ 5 - 3
README.md

@@ -461,15 +461,15 @@ Enfin, relancer:
 #### Problème de permission lors de l'accès à local.api.opentalent.fr/
 #### Problème de permission lors de l'accès à local.api.opentalent.fr/
 
 
 Lorsque vous demandez la page https://local.api.opentalent.fr/doc,
 Lorsque vous demandez la page https://local.api.opentalent.fr/doc,
-une erreur php s'affiche, avec un message similaire à ceci:
+une erreur php s'affiche, avec un message similaire à ceci :
 
 
     RuntimeException in ClassCollectionLoader.php line 280: Cache directory "/var/www/html/app/cache/dev" is not writable.
     RuntimeException in ClassCollectionLoader.php line 280: Cache directory "/var/www/html/app/cache/dev" is not writable.
 
 
-Accéder au docker php70:
+Accéder au docker php70 :
 
 
     docker exec -it php70 bash
     docker exec -it php70 bash
 
 
-Puis exècuter:
+Puis exécuter :
 
 
     chmod -R 777 /var/www/html/app/cache/
     chmod -R 777 /var/www/html/app/cache/
 
 
@@ -550,6 +550,8 @@ Supprimer l'alias `search` de l'index qui le porte, et ajouter ce même alias à
 
 
 #### L'adresse Ip publique de docker n'est pas celle du vpn
 #### L'adresse Ip publique de docker n'est pas celle du vpn
 
 
+Faire, dans cet ordre précis:
+
 1. Couper le VPN
 1. Couper le VPN
 
 
 2. Couper le service docker:
 2. Couper le service docker:

+ 30 - 4
docker-compose.yaml

@@ -70,12 +70,12 @@ services:
       - appdata:/var/www/html/app/logs/
       - appdata:/var/www/html/app/logs/
       # ATTENTION : LES VENDROS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
       # ATTENTION : LES VENDROS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
       # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated.
       # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated.
-      - appVendor:/var/www/html/vendor/
+#      - appVendor:/var/www/html/vendor/
       - ./useruploaddata:/var/www/html/fileadmin/user_upload:cached
       - ./useruploaddata:/var/www/html/fileadmin/user_upload:cached
       # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
       # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
       - ./apps/opentalent-platform:/var/www/html:cached
       - ./apps/opentalent-platform:/var/www/html:cached
-      # A l'inverse, les vendors seront surtout modifiés dans le container
-#      - ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated
+      # À l'inverse, les vendors seront surtout modifiés dans le container
+      - ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated
     depends_on:
     depends_on:
       - db
       - db
       - es
       - es
@@ -91,6 +91,9 @@ services:
       - ./docker/nginx/site_ap2i.conf:/etc/nginx/conf.d/default.conf:cached
       - ./docker/nginx/site_ap2i.conf:/etc/nginx/conf.d/default.conf:cached
     environment:
     environment:
       - VIRTUAL_HOST=${AP2I_VIRTUAL_HOST}
       - VIRTUAL_HOST=${AP2I_VIRTUAL_HOST}
+      - MERCURE_URL=https://${MERCURE_VIRTUAL_HOST}
+      - MERCURE_PUBLIC_URL=https://${AP2I_VIRTUAL_HOST}/.well-known/mercure
+      - MERCURE_JWT_SECRET=${MERCURE_SUBSCRIBER_JWT_KEY}
     depends_on:
     depends_on:
       - ap2i
       - ap2i
 
 
@@ -112,7 +115,8 @@ services:
       - ./apps/ap2i:/var/www/html:cached
       - ./apps/ap2i:/var/www/html:cached
       # Version Symfony 5
       # Version Symfony 5
       - appdata5:/var/www/html/var/cache/
       - appdata5:/var/www/html/var/cache/
-      - appdata5:/var/www/html/var/logs/
+      - appdata5:/var/www/html/var/log/
+      - appdata5:/var/www/html/var/files/
       # ATTENTION : LES VENDORS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
       # ATTENTION : LES VENDORS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
       # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/api/New/vendor:/var/www/html/vendor:delegated.
       # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/api/New/vendor:/var/www/html/vendor:delegated.
 #      - appVendor5:/var/www/html/vendor/
 #      - appVendor5:/var/www/html/vendor/
@@ -124,6 +128,26 @@ services:
       - thumbor
       - thumbor
       - nginx-proxy
       - nginx-proxy
 
 
+  mercure:
+    hostname: mercure
+    container_name: mercure
+    build:
+      context: .
+      dockerfile: docker/mercure/Dockerfile
+    restart: unless-stopped
+    environment:
+      VIRTUAL_HOST: ${MERCURE_VIRTUAL_HOST}
+      SERVER_NAME: ${MERCURE_VIRTUAL_HOST}
+      MERCURE_PUBLISHER_JWT_KEY: ${MERCURE_PUBLISHER_JWT_KEY}
+      MERCURE_SUBSCRIBER_JWT_KEY: ${MERCURE_SUBSCRIBER_JWT_KEY}
+      # Set the URL of your Symfony project (without trailing slash!) as value of the cors_origins directive
+      MERCURE_EXTRA_DIRECTIVES: |
+        cors_origins https://local.mercure.opentalent.fr
+    volumes:
+      - mercure_data:/data
+      - mercure_config:/config
+      - ./docker/mercure/caddy:/etc/caddy:cached
+
   python39:
   python39:
     hostname: python39
     hostname: python39
     container_name: python39
     container_name: python39
@@ -395,3 +419,5 @@ volumes:
   appVendor5: ~
   appVendor5: ~
   adminBower: ~
   adminBower: ~
   adminNode: ~
   adminNode: ~
+  mercure_data:
+  mercure_config:

+ 7 - 0
docker/mercure/Dockerfile

@@ -0,0 +1,7 @@
+FROM dunglas/mercure
+
+RUN apk add wget bash nano;
+
+WORKDIR /etc/caddy
+
+EXPOSE 80

+ 36 - 0
docker/mercure/caddy/Caddyfile

@@ -0,0 +1,36 @@
+# Learn how to configure the Mercure.rocks Hub on https://mercure.rocks/docs/hub/config
+{
+    auto_https off
+    {$GLOBAL_OPTIONS}
+}
+
+:80
+
+tls internal
+log
+
+route {
+    redir / /.well-known/mercure/ui/
+    encode zstd gzip
+
+    mercure {
+        # Transport to use (default to Bolt)
+        transport_url {$MERCURE_TRANSPORT_URL:bolt://mercure.db}
+        # Publisher JWT key
+        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
+        # Subscriber JWT key
+        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
+        # Permissive configuration for the development environment
+        cors_origins *
+        publish_origins *
+        demo
+        anonymous
+        subscriptions
+        # Extra directives
+        {$MERCURE_EXTRA_DIRECTIVES}
+    }
+
+    respond /healthz 200
+
+    respond "Not Found" 404
+}

+ 3 - 0
docker/nginx-proxy/certs/ssl_keys.sh

@@ -58,4 +58,7 @@ cp docker/nginx-proxy/certs/default.crt docker/nginx-proxy/certs/local.app-doc.o
 cp docker/nginx-proxy/certs/default.key docker/nginx-proxy/certs/local.frames.opentalent.fr.key
 cp docker/nginx-proxy/certs/default.key docker/nginx-proxy/certs/local.frames.opentalent.fr.key
 cp docker/nginx-proxy/certs/default.crt docker/nginx-proxy/certs/local.frames.opentalent.fr.crt
 cp docker/nginx-proxy/certs/default.crt docker/nginx-proxy/certs/local.frames.opentalent.fr.crt
 
 
+cp docker/nginx-proxy/certs/default.key docker/nginx-proxy/certs/local.mercure.opentalent.fr.key
+cp docker/nginx-proxy/certs/default.crt docker/nginx-proxy/certs/local.mercure.opentalent.fr.crt
+
 #docker-compose build --no-cache nginx-proxy
 #docker-compose build --no-cache nginx-proxy