bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


docker_nodejs

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
docker_nodejs [2023/07/03 10:21]
montserrat_castellarnau [Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml)]
docker_nodejs [2023/07/03 10:58] (actual)
montserrat_castellarnau [Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml)]
Línia 109: Línia 109:
 I ara podem crear el contenidor: I ara podem crear el contenidor:
   $ docker run --name contenidor_node -p 3000:3000 -d imatge_node   $ docker run --name contenidor_node -p 3000:3000 -d imatge_node
 +Ara en qualsevol navegador podem consultar les dades de la taula pacients: 
 +  http://localhost:3000/pacients
 ===== Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml) ===== ===== Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml) =====
 Dins del mateix directori "exercici", creem un directori sql amb el següent fitxer, que contindrà les instruccions SQL per crear la taula pacients i insertar alguns registres: Dins del mateix directori "exercici", creem un directori sql amb el següent fitxer, que contindrà les instruccions SQL per crear la taula pacients i insertar alguns registres:
Línia 130: Línia 131:
 <WRAP todo> <WRAP todo>
 Ara l'exerici consisteix en crear un fitxer docker-compose.yml, que ens aixequi 3 contenidors: Ara l'exerici consisteix en crear un fitxer docker-compose.yml, que ens aixequi 3 contenidors:
-  * Contenidor1: la Base de dades PostgreSQL amb la taula creada i les dades +  * Contenidor1: La RestApi, però ara ha de treballar amb la BBDD del Continidor2 
-  * Contenidor2: La RestApi, però ara ha de treballar amb la BBDD del Continidor1+  * Contenidor2: la Base de dades PostgreSQL amb la taula creada i les dades
   * Contenidor3: L'eina PgAdmin per comprovar que hi ha la BBDD i la taula. I també podrem fer un Insert.   * Contenidor3: L'eina PgAdmin per comprovar que hi ha la BBDD i la taula. I també podrem fer un Insert.
 </WRAP> </WRAP>
 +<file docker-compose docker-compose.yml>
 +version: '3'
 +services:
 +  server:
 +    build: 
 +      context: .
 +      dockerfile: Dockerfile
 +    ports:
 +      - "3000:3000"
 +    environment:
 +      NODE_ENV: production
 +      PG_HOST: db
 +      PG_PORT: 5432
 +      PG_DATABASE: appdb
 +      PG_USER: appuser
 +      PG_PASSWORD: password
 +    depends_on:
 +      - db
 +  db:
 +    image: postgres
 +    container_name: postgresdb
 +    ports:
 +      - "5432:5432"
 +    environment:
 +      POSTGRES_DB: appdb
 +      POSTGRES_USER: appuser
 +      POSTGRES_PASSWORD: password
 +    volumes:
 +      - dades:/var/lib/postgresql/data
 +      - ./sql:/docker-entrypoint-initdb.d
 +  pgadmin:
 +    image: dpage/pgadmin4
 +    container_name: pgadmin4_container
 +    restart: always
 +    ports:
 +      - "5050:80"
 +    environment:
 +      PGADMIN_DEFAULT_EMAIL: [email protected]
 +      PGADMIN_DEFAULT_PASSWORD: admin
 +    volumes:
 +      - pgadmin-data:/var/lib/pgadmin
 +volumes:
 +  dades:
 +
 +</file>
 +<WRAP important>
 +Ara cal modificar el fitxer index.controllers.js de l'Api, per tal que apunti a la base de dades del contenidor corresponent:
 +const pool = new Pool({
 +    user: 'appuser',
 +    host: 'db',
 +    password: 'password',
 +    database: 'appdb',
 +    port: '5432'
 +});
 +</WRAP>
 +Ara ja podem aixecar els contenidors:
 +  $ docker-compose up -d
 +Ara en qualsevol navegador podem consultar les dades de la taula pacients i veurem que se'ns mostren les que hem posat en el nostre script SQL:
 +  http://localhost:3000/pacients
 +Ara ens connectarem al contenidor3, PgAdmin i farem l'insert d'un nou registre:
 +
 +{{:wiki:pgadmin.png?nolink&200|}}
 +
 +Ens loguegem amb les credencial que hem posat en el docker-compose en el Contenidor3.
 +Ara necessitem saber la IP del contenidor2, on hi ha la BBDD. Per saber el nom ho podem consulta al Docker Descktop o bé fent docker ps i veure els contenidors que hi ha ara executant-se:
 +
 +{{:wiki:dockerdescktop.png?nolink&200|}}
 +
 +A continuació, posem al terminal:
 +  $ docker inspect postgresdb
 +I la ip en aquest cas és: "IPAddress": "172.22.0.3"
 +En el PgAdmin del navegador, ens connectem a la nostra BBDD, el contenidor2:\\
 +
 +{{:wiki:servidorpostgres.png?nolink&200|}}
 +
 +I efectivament, podem comprovar com hi tenim la BBDD appdb, amb la taula pacients i els registres:
 +
 +{{:wiki:taula.png?nolink&200|}}
 +
 +Si inserim un altre registre a la taula pacients:
 +  INSERT INTO pacients (nom) VALUES ('David')
 +Si tornem al navegador, podem veure que ja se'ns mostra:
 +
 +{{:wiki:afegirregistre.png?nolink&200|}}
 +
 +A més a més, el contenidor2 de la BBDD, s'ha creat amb persistència, és a dir tenim les dades lligades a un volum de docker (dades). Si ho mirem en el docker Desktop, podem observar que li posa el nom de la carpeta, més el nom "dades":
 +
 +{{:wiki:volums.png?nolink&200|}}
  
 +Amb això, si se'ns para o cau aquest contenidor en podem aixecar un altre lligat a aquest volum i continuarem tenin la BBDD.
  
docker_nodejs.1688379707.txt.gz · Darrera modificació: 2023/07/03 10:21 per montserrat_castellarnau