Diferència entre revisions de la pàgina «Snap! a un servidor intermediari invers emprant Dockers»

De things.cat
Salta a: navegació, cerca
m (Posada en marxa del docker)
m (Construcció del docker)
 
(Hi ha 3 revisions intermèdies del mateix usuari que no es mostren)
Línia 87: Línia 87:
 
  local    reverse-proxy_vhost
 
  local    reverse-proxy_vhost
 
  local    '''snap_data_vol'''
 
  local    '''snap_data_vol'''
 +
Accés al volum de dades:
 +
jordi@vps:~$ sudo bash
 +
root@vps:~# cd '''/var/lib/docker/volumes/snap_data_vol/_data/'''
 +
root@vps:/var/lib/docker/volumes/snap_data_vol/_data# cd Examples/
 +
root@vps:/var/lib/docker/volumes/snap_data_vol/_data/Examples# '''cat EXAMPLES'''
 +
animal-game.xml Animal Game
 +
Codification.xml Codification
 +
copter.xml Copter
 +
count-change.xml Count Change
 +
icecream-visual.xml Icecream Visual
 +
'''IoT-Vertebrae.xml IoT-Vertebrae'''
 +
JSfunctions.xml JSfunctions
 +
live-tree.xml Live Tree
 +
swimmer.xml Swimmer
 +
tree.xml Tree
 +
vee.xml Vee
 +
root@vps:/var/lib/docker/volumes/snap_data_vol/_data/Examples# ls
 +
Codification.xml  '''IoT-Vertebrae.xml'''  animal-game.xml  count-change.xml   live-tree.xml  tree.xml
 +
EXAMPLES   JSfunctions.xml    copter.xml      icecream-visual.xml  swimmer.xml   vee.xml
 +
 
== Construcció del ''docker'' ==
 
== Construcció del ''docker'' ==
Construïu el ''docker'':
+
Construïu el ''docker'' (ha d'haver l'arxiu '''Dockerfile''', creat a un pas previ, al mateix directori):
 
  jordi@vps:~/bin/html/master$ '''docker build -t snap9:v2.13 .'''
 
  jordi@vps:~/bin/html/master$ '''docker build -t snap9:v2.13 .'''
 +
 
== Posada en marxa del ''docker'' ==
 
== Posada en marxa del ''docker'' ==
 
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.
 
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.
Línia 95: Línia 116:
 
Poseu el ''docker'' en marxa '''sense persistència''':
 
Poseu el ''docker'' en marxa '''sense persistència''':
 
  jordi@vps:~/bin/html/master$ '''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'''
 
  jordi@vps:~/bin/html/master$ '''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'''
Poseu el ''docker'' en marxa '''amb persistència''':
+
Poseu el ''docker'' en marxa '''amb persistència''' de les personalitzacions:
 
  jordi@vps:~/bin/html/master$ '''docker run --rm --name snap9 -e VIRTUAL_HOST=snap.binefa.cat -e LETSENCRYPT_HOST=snap.binefa.cat -e VIRTUAL_PORT=80 --network net -v snap_data_vol:/usr/share/nginx/html -d snap9:v2.13'''
 
  jordi@vps:~/bin/html/master$ '''docker run --rm --name snap9 -e VIRTUAL_HOST=snap.binefa.cat -e LETSENCRYPT_HOST=snap.binefa.cat -e VIRTUAL_PORT=80 --network net -v snap_data_vol:/usr/share/nginx/html -d snap9:v2.13'''
  

Revisió de 16:21, 27 març 2024

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

Baixada del codi font

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$

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 (IoT-Vertebrae.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

Creació de Dockerfile i default

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

Volum de dades

Per a poder fer modificacions persistents al docker caldrà crear un volum. A aquest exemple, el nom del volum és snap_data_vol:

jordi@vps:~$ docker volume create --name snap_data_vol
node_red_data_vol
jordi@vps:~$ docker volume ls
DRIVER    VOLUME NAME
local     4c6fef4d8230506f389bfb915256365bac80be875d55077ec4eff4c6672d89
local     316f02665e61720a8165c30d9cec6de5a8b3c6ecc4175c3faecc00dafe548d
local     c278d7565bba5de8fb48f98951c293d27818604683012c4bac202281db07ca
local     e9e43b1bb654f05dedf8352c6f4074a3089e5b1c3cf8e7efddb6400a753893
local     node_red_data_vol
local     reverse-proxy_certs
local     reverse-proxy_dhparam
local     reverse-proxy_html
local     reverse-proxy_vhost
local     snap_data_vol

Accés al volum de dades:

jordi@vps:~$ sudo bash
root@vps:~# cd /var/lib/docker/volumes/snap_data_vol/_data/
root@vps:/var/lib/docker/volumes/snap_data_vol/_data# cd Examples/
root@vps:/var/lib/docker/volumes/snap_data_vol/_data/Examples# cat EXAMPLES 
animal-game.xml	Animal Game
Codification.xml	Codification
copter.xml	Copter
count-change.xml	Count Change
icecream-visual.xml	Icecream Visual
IoT-Vertebrae.xml	IoT-Vertebrae
JSfunctions.xml	JSfunctions
live-tree.xml	Live Tree
swimmer.xml	Swimmer
tree.xml	Tree
vee.xml	Vee
root@vps:/var/lib/docker/volumes/snap_data_vol/_data/Examples# ls
Codification.xml  IoT-Vertebrae.xml  animal-game.xml  count-change.xml	   live-tree.xml  tree.xml
EXAMPLES	  JSfunctions.xml    copter.xml       icecream-visual.xml  swimmer.xml	  vee.xml

Construcció del docker

Construïu el docker (ha d'haver l'arxiu Dockerfile, creat a un pas previ, al mateix directori):

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

Posada en marxa del docker

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 sense persistència:

jordi@vps:~/bin/html/master$ 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

Poseu el docker en marxa amb persistència de les personalitzacions:

jordi@vps:~/bin/html/master$ docker run --rm --name snap9 -e VIRTUAL_HOST=snap.binefa.cat -e LETSENCRYPT_HOST=snap.binefa.cat -e VIRTUAL_PORT=80 --network net -v snap_data_vol:/usr/share/nginx/html -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)