Snap! a un servidor intermediari invers emprant Dockers

De things.cat
La revisió el 13:09, 27 març 2024 per Jordi Binefa (discussió | contribucions) (Previ)
Salta a: navegació, cerca

Previ

Cal tenir una Servidor intermediari invers. Farem servir la mateixa xarxa interna de dockers al Node-RED i al servidor intermediari invers.

Podeu veure quins dockers són connectats a la xarxa interna:

docker network inspect net

Personalització del Snap!

Opció de JavaScript activada per defecte

Per raons de seguretat, s'ha desactivat el JavaScript per defecte. Si us munteu el vostre propi servei al núvol, per a poder cridar programes vostres amb funcions amb JavaScript, heu d'afegir aquesta línia, en negreta, a l'arxiu snap.html:

       <script>
           Process.prototype.enableJS = true; // <-- Per a tenir seleccionat el JS per defecte
           var world;
           window.onload = function () {
               if ('serviceWorker' in navigator) {
                   navigator.serviceWorker.register('sw.js');
               }
               world = new WorldMorph(document.getElementById('world'));
               new IDE_Morph().openIn(world);
               loop();
           };
           function loop() {
               requestAnimationFrame(loop);
               world.doOneCycle();
           }
       </script>

= Inclusió de nous exemples

A la carpeta Examples hi afegiu el nou exemple amb extensió .xml i editeu l'arxiu EXAMPLES. En aquest exemple d'edició de l'arxiu EXAMPLES s'ha afegit el nom de l'arxiu .xml afegit a la carpeta Examples i separat per un tabulador una descripció mínima de l'exemple:

animal-game.xml	Animal Game
Codification.xml	Codification
copter.xml	Copter
count-change.xml	Count Change
icecream-visual.xml	Icecream Visual
IoT-Vertebrae.xml	Interaction with IoT-Vertebrae
JSfunctions.xml	JSfunctions
live-tree.xml	Live Tree
swimmer.xml	Swimmer
tree.xml	Tree
vee.xml	Vee

Construcció del docker

Baixeu el codi font del Snap! a GitHub:

jordi@vps:~/bin/html$ wget https://github.com/jmoenig/Snap/archive/refs/heads/master.zip

Descomprimiu (en cas de no tenir l'eina unzip feu sudo apt install unzip per a tenir-la):

jordi@vps:~/bin/html$ unzip master.zip
jordi@vps:~/bin/html$ cd master
jordi@vps:~/bin/html/master$

Dins de la carpeta a on hi l'arxiu index.html feu un nou arxiu anomenat default:

jordi@vps:~/bin/html/master$ nano default

I hi afegiu aquest contingut:

server {
   listen 80 default_server;
   listen [::]:80 default_server;
   
   root /usr/share/nginx/html;
   index index.html index.htm;

   server_name _;
   location / {
       try_files $uri $uri/ =404;
   }
}

Dins de la carpeta a on hi l'arxiu index.html feu un nou arxiu anomenat Dockerfile:

jordi@vps:~/bin/html/master$ nano Dockerfile

I hi afegiu aquest contingut:

FROM nginx:alpine

COPY . /usr/share/nginx/html

EXPOSE 80

Construïu el docker:

jordi@vps:~/bin/html/master$ docker build -t snap9:v2.13 .

Al vostre proveïdor de dominis apunteu el nou subdomini (a l'exemple és snap.binefa.cat) al vostre VPS al núvol. A la llista de DNS feu servir el tipus A si apunteu a una IP o el tipus CNAME si apunteu a un altre nom de domini.

Poseu el docker en marxa:

docker run --rm --name snap9 -e VIRTUAL_HOST=snap.binefa.cat -e LETSENCRYPT_HOST=snap.binefa.cat -e VIRTUAL_PORT=80 --network net -d snap9:v2.13

Documentació

How to Build Docker Image : Comprehensive Beginners Guide (Fa servir com a Linux base un Ubuntu 18.04)

How I Deployed my Website as a Docker Container (Fa servir com a base un docker que és un servidor nginx instal·lat dins d'un Linux Alpine. Alpine és un Linux minimalista)