Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
docker_nodejs [2023/07/03 09:47] montserrat_castellarnau [Dockeritzar la RestApi] |
docker_nodejs [2023/07/03 10:58] (actual) montserrat_castellarnau [Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml)] |
||
---|---|---|---|
Línia 93: | Línia 93: | ||
CMD [ " | CMD [ " | ||
</ | </ | ||
+ | <WRAP important> | ||
+ | Si primer creem el contenidor sense el -d, podrem veure que dona el següent error: | ||
+ | * “Error: connect ECONNREFUSED 127.0.0.1: | ||
+ | El motiu és que si la Api està dins d’un contenidor i accedeix a la bases de dades que hi ha a l' | ||
+ | {{: | ||
+ | </ | ||
+ | <WRAP important> | ||
+ | Un cop modificada la IP, apareix un altre eror: | ||
+ | * “no hay una línea en pg_hba.conf para 192.168.1.221, | ||
+ | En aquest cas cal afegir, al fitxer pg_hba.conf | ||
+ | host all postgres | ||
+ | </ | ||
Des del terminal, en la carpeta " | Des del terminal, en la carpeta " | ||
$ docker build -t imatge_node . | $ docker build -t imatge_node . | ||
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:// | ||
===== Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml) ===== | ===== Dockeritzar la Base de Dades PostgreSQL (docker_compose.yml) ===== | ||
+ | Dins del mateix directori " | ||
+ | |||
+ | <file SQL init.sql> | ||
+ | CREATE TABLE pacients ( | ||
+ | id SERIAL PRIMARY KEY, | ||
+ | nom VARCHAR(50) NOT NULL | ||
+ | ); | ||
+ | |||
+ | INSERT INTO pacients (nom) VALUES | ||
+ | (' | ||
+ | (' | ||
+ | (' | ||
+ | (' | ||
+ | (' | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | Ara l' | ||
+ | * Contenidor1: | ||
+ | * Contenidor2: | ||
+ | * Contenidor3: | ||
+ | </ | ||
+ | <file docker-compose docker-compose.yml> | ||
+ | version: ' | ||
+ | services: | ||
+ | server: | ||
+ | build: | ||
+ | context: . | ||
+ | dockerfile: Dockerfile | ||
+ | ports: | ||
+ | - " | ||
+ | environment: | ||
+ | NODE_ENV: production | ||
+ | PG_HOST: db | ||
+ | PG_PORT: 5432 | ||
+ | PG_DATABASE: | ||
+ | PG_USER: appuser | ||
+ | PG_PASSWORD: | ||
+ | depends_on: | ||
+ | - db | ||
+ | db: | ||
+ | image: postgres | ||
+ | container_name: | ||
+ | ports: | ||
+ | - " | ||
+ | environment: | ||
+ | POSTGRES_DB: | ||
+ | POSTGRES_USER: | ||
+ | POSTGRES_PASSWORD: | ||
+ | volumes: | ||
+ | - dades:/ | ||
+ | - ./ | ||
+ | pgadmin: | ||
+ | image: dpage/ | ||
+ | container_name: | ||
+ | restart: always | ||
+ | ports: | ||
+ | - " | ||
+ | environment: | ||
+ | PGADMIN_DEFAULT_EMAIL: | ||
+ | PGADMIN_DEFAULT_PASSWORD: | ||
+ | volumes: | ||
+ | - pgadmin-data:/ | ||
+ | volumes: | ||
+ | dades: | ||
+ | |||
+ | </ | ||
+ | <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: ' | ||
+ | host: ' | ||
+ | password: ' | ||
+ | database: ' | ||
+ | port: ' | ||
+ | }); | ||
+ | </ | ||
+ | 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:// | ||
+ | Ara ens connectarem al contenidor3, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Ens loguegem amb les credencial que hem posat en el docker-compose en el Contenidor3. | ||
+ | Ara necessitem saber la IP del contenidor2, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | A continuació, | ||
+ | $ docker inspect postgresdb | ||
+ | I la ip en aquest cas és: " | ||
+ | En el PgAdmin del navegador, ens connectem a la nostra BBDD, el contenidor2: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | I efectivament, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Si inserim un altre registre a la taula pacients: | ||
+ | INSERT INTO pacients (nom) VALUES (' | ||
+ | Si tornem al navegador, podem veure que ja se'ns mostra: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | A més a més, el contenidor2 de la BBDD, s'ha creat amb persistència, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Amb això, si se'ns para o cau aquest contenidor en podem aixecar un altre lligat a aquest volum i continuarem tenin la BBDD. | ||
+ |