From 61667ded6d01ddce4828410007e5c089dd4085f2 Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Fri, 25 Oct 2024 11:01:20 +0200 Subject: [PATCH 1/6] feat: use virtual network to connect dockers to db --- docker-compose.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index 12c63f9..bf9b6ff 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,6 +10,11 @@ services: - POSTGRES_PASSWORD=${DB_PASSWORD} volumes: - ./database:/var/lib/postgresql/data + + networks: + - briques-db + + back: hostname: back container_name: briques_back @@ -27,8 +32,21 @@ services: - '${NODE_PORT}:3000' depends_on: - database + + networks: + - briques-db + adminer: image: adminer restart: always ports: - 8080:8080 + + networks: + - briques-db + + +networks: + briques-db: + driver: bridge + From 95b678fb88112e09eb459c14608824f5013f4158 Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Fri, 25 Oct 2024 11:02:30 +0200 Subject: [PATCH 2/6] feat: add types for pg for dev --- back-end/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/back-end/package.json b/back-end/package.json index b728e0d..7c8cdf5 100644 --- a/back-end/package.json +++ b/back-end/package.json @@ -14,6 +14,7 @@ "description": "", "devDependencies": { "@types/express": "^5.0.0", + "@types/pg": "^8.11.10", "globals": "^15.11.0", "typescript": "^5.6.3" }, From a2e176f2491c2958ac457a0dc7cf80dd647d479d Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Fri, 25 Oct 2024 11:02:54 +0200 Subject: [PATCH 3/6] fix: use ENV instead of ARG for env variables --- back-end/Dockerfile.back | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/back-end/Dockerfile.back b/back-end/Dockerfile.back index 8b28269..9f2a528 100644 --- a/back-end/Dockerfile.back +++ b/back-end/Dockerfile.back @@ -5,12 +5,12 @@ FROM node:22-alpine WORKDIR /usr/src/back # Environment declaration variables -ARG NODE_ENV="dev" -ARG DB_HOST="postgres" -ARG DB_NAME="briques" -ARG DB_USER="briques_db" -ARG DB_PASSWORD="briques_password" -ARG DB_PORT=5432 +ENV NODE_ENV="dev" +ENV DB_HOST="briques_postgres" +ENV DB_NAME="briques_db" +ENV DB_USER="briques_llm" +ENV DB_PASSWORD="briques_password_2025" +ENV DB_PORT=5432 COPY package.json ./ From f0b04ff710fd0d9ff5fed14c10edb5fc74797675 Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Fri, 25 Oct 2024 11:03:08 +0200 Subject: [PATCH 4/6] fix: don't use pm2 for dev --- back-end/Dockerfile.back | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/back-end/Dockerfile.back b/back-end/Dockerfile.back index 9f2a528..9079939 100644 --- a/back-end/Dockerfile.back +++ b/back-end/Dockerfile.back @@ -40,4 +40,5 @@ RUN chmod -R u=rwx,g=,o= ./ EXPOSE 3000 # Start app -CMD ["pm2", "start", "dist/app.js", "--no-daemon"] +CMD ["npm", "run", "startonly"] +#CMD ["pm2", "start", "dist/app.js", "--no-daemon"] From b16d648fbdd9b7c04f74a36a1b35b6d2fd791549 Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Fri, 25 Oct 2024 11:04:47 +0200 Subject: [PATCH 5/6] feat: create a client factory and an request example for the db --- back-end/src/db/db_client.ts | 23 +++++++++++++++++++++++ back-end/src/db/index.ts | 16 ++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 back-end/src/db/db_client.ts create mode 100644 back-end/src/db/index.ts diff --git a/back-end/src/db/db_client.ts b/back-end/src/db/db_client.ts new file mode 100644 index 0000000..52d29ca --- /dev/null +++ b/back-end/src/db/db_client.ts @@ -0,0 +1,23 @@ +import pg from 'pg'; + +const db_user = process.env.DB_USER ?? "admin"; +const db_password = process.env.DB_PASSWORD ?? "admin"; +const db_name = process.env.DB_NAME ?? "briques"; +const db_host = process.env.DB_HOST ?? "localhost"; +const db_port = parseInt(process.env.DB_PORT ?? "5432"); + +console.log("=== DB CONFIG ==="); +console.log(`DB_USER:\t\t${db_user}`); +console.log(`DB_PASSWORD:\t${db_user}`); +console.log(`DB_NAME:\t\t${db_name}`); +console.log(`DB_HOST:\t\t${db_host}`); +console.log(`DB_PORT:\t\t${db_port}`); + + +export const new_client = () => new pg.Client({ + user: db_user, + password: db_password, + database: db_name, + host: db_host, + port: db_port, +}); diff --git a/back-end/src/db/index.ts b/back-end/src/db/index.ts new file mode 100644 index 0000000..934d4dd --- /dev/null +++ b/back-end/src/db/index.ts @@ -0,0 +1,16 @@ +import { new_client } from './db_client'; + +async function example_request() { + const client = new_client(); + await client.connect(); + + const res = await client.query('SELECT $1::text as message', ['Hello world!']); + const message = res.rows[0].message; // Hello world! + await client.end(); + + return message; +} + +export default { + example_request, +}; From 7f2b5b6964f3cd09f3339d38eabbfbf5afc204e0 Mon Sep 17 00:00:00 2001 From: Nemo D'ACREMONT Date: Fri, 25 Oct 2024 11:04:58 +0200 Subject: [PATCH 6/6] feat: add the example to the app --- back-end/src/app.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/back-end/src/app.ts b/back-end/src/app.ts index bd7c445..dee7341 100644 --- a/back-end/src/app.ts +++ b/back-end/src/app.ts @@ -1,9 +1,12 @@ import express from 'express'; -const app = express(); -const port = 3000; +import db from './db'; -app.get('/', (req, res) => { - res.send('Hello World!'); +const app = express(); +const port = process.env.PORT ?? 3000; + +app.get('/', async (_req, res) => { + const message = await db.example_request(); + res.send(message); }); app.listen(port, () => {