From d96861cddf48e569273d830c04847b03c711d9ca Mon Sep 17 00:00:00 2001 From: kinou-p Date: Fri, 24 Mar 2023 18:45:36 +0100 Subject: [PATCH] trying to connect db to backend --- Makefile | 6 +- backend/package-lock.json | 102 ++++++++++++++++++++++++++++++ backend/package.json | 4 +- backend/server.js | 43 ++++++++++++- database/init.sql | 19 ++++++ docker-compose.yml | 14 ++-- dockerfiles/Dockerfile.PostgreSQL | 8 ++- dockerfiles/Dockerfile.backEnd | 5 +- 8 files changed, 185 insertions(+), 16 deletions(-) create mode 100644 database/init.sql diff --git a/Makefile b/Makefile index 5623b4eb..012b7d08 100644 --- a/Makefile +++ b/Makefile @@ -6,13 +6,13 @@ # By: apommier +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/03/19 09:29:27 by apommier #+# #+# # -# Updated: 2023/03/19 11:22:00 by apommier ### ########.fr # +# Updated: 2023/03/22 17:51:22 by apommier ### ########.fr # # # # **************************************************************************** # all: -# -mkdir -p /home/apommier/data/wordpress -# -mkdir -p /home/apommier/data/mariadb +# -mkdir -p /home/apommier/data/wordpress + -mkdir -p /home/apommier/data/postgresql docker-compose -f docker-compose.yml up --build fclean: down diff --git a/backend/package-lock.json b/backend/package-lock.json index 0c703230..24a00f37 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -37,6 +37,11 @@ "unpipe": "1.0.0" } }, + "buffer-writer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", + "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==" + }, "bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -92,6 +97,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -320,6 +330,11 @@ "ee-first": "1.1.1" } }, + "packet-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", + "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==" + }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -330,6 +345,83 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" }, + "pg": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", + "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "requires": { + "buffer-writer": "2.0.0", + "packet-reader": "1.0.0", + "pg-connection-string": "^2.5.0", + "pg-pool": "^3.6.0", + "pg-protocol": "^1.6.0", + "pg-types": "^2.1.0", + "pgpass": "1.x" + } + }, + "pg-connection-string": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", + "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + }, + "pg-int8": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", + "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" + }, + "pg-pool": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", + "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==" + }, + "pg-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", + "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==" + }, + "pg-types": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "requires": { + "pg-int8": "1.0.1", + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" + } + }, + "pgpass": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", + "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", + "requires": { + "split2": "^4.1.0" + } + }, + "postgres-array": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" + }, + "postgres-bytea": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==" + }, + "postgres-date": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" + }, + "postgres-interval": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "requires": { + "xtend": "^4.0.0" + } + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -426,6 +518,11 @@ "object-inspect": "^1.9.0" } }, + "split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -459,6 +556,11 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } } diff --git a/backend/package.json b/backend/package.json index 269fb1ea..3e36ce06 100644 --- a/backend/package.json +++ b/backend/package.json @@ -9,7 +9,9 @@ }, "dependencies": { "body-parser": "^1.20.2", - "express": "^4.18.2" + "dotenv": "^16.0.3", + "express": "^4.18.2", + "pg": "^8.10.0" }, "devDependencies": {}, "license": "ISC" diff --git a/backend/server.js b/backend/server.js index df4bcac0..eaf19083 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,7 +1,48 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* server.js :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: apommier +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2023/03/22 18:05:15 by apommier #+# #+# */ +/* Updated: 2023/03/22 19:20:40 by apommier ### ########.fr */ +/* */ +/* ************************************************************************** */ + const express = require('express'); const bodyParser = require('body-parser'); +// const { Client } = require('pg'); +const { Pool } = require('pg'); + +const pool = new Pool({ + host: '127.0.0.1', + port: 5432, + user: 'kinou', + password: 'pass', + database: 'postgreDB' +}) + +module.exports = pool; + + +pool.query('SELECT * FROM users', (err, res) => { + if (err) { + console.error(err); + } else { + console.log(res.rows); + } + }); + const app = express(); -// app.use(express.json()); +// const client = new Client({ +// host: process.env.POSTGRES_HOST, +// port: process.env.POSTGRES_PORT, +// user: process.env.POSTGRES_USER, +// password: process.env.POSTGRES_PASSWORD, +// database: process.env.POSTGRES_DB +// }); +// client.connect(); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); diff --git a/database/init.sql b/database/init.sql new file mode 100644 index 00000000..fd6fdb80 --- /dev/null +++ b/database/init.sql @@ -0,0 +1,19 @@ + + +DROP DATABASE IF EXISTS test; +CREATE DATABASE postgreDB; +CREATE USER IF NOT EXISTS '$POSTGRES_USER'@'%' IDENTIFIED BY 'POSTGRES_PASSWORD'; +GRANT ALL PRIVILEGES ON *.* TO '$POSTGRES_USER'@'%'; +SET PASSWORD FOR 'root'@'$POSTGRES_HOST' = PASSWORD('POSTGRES_ROOT_PASSWORD'); + +FLUSH PRIVILEGES; +CREATE TABLE user ( + nickname varchar(20), + user_password varchar(20), + user_login varchar(20) +); + +CREATE TABLE score ( + win int, + loose int +); \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 667b201f..0f6aec56 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,10 +7,9 @@ services: context : ./ dockerfile: ./dockerfiles/Dockerfile.nginx container_name: nginx - #image: nginx:homemade + env_file: .env depends_on: - backend - # - backend ports: - 80:80 # - 443:443 @@ -20,15 +19,13 @@ services: networks: - pongNetwork - # backend: - backend: + backend: build: context : ./ dockerfile: ./dockerfiles/Dockerfile.backEnd container_name: backend ports: - 5000:5000 - #image: wordpress:homemade env_file: .env volumes: - ./frontend:/var/www/html @@ -36,9 +33,9 @@ services: # - ./backend:/home/node/app depends_on: - postgresql + restart: unless-stopped networks: - pongNetwork - # restart: unless-stopped postgresql: build: #./dockerfiles/Dockerfile.PostgreSQL @@ -47,8 +44,9 @@ services: container_name: postgresql #image: mariadb:homemade ports: - - 3306:3306 - env_file: .env + - 5432:5432 + # - ${POSTGRES_PORT}:${POSTGRES_PORT} + env_file: .env #volumes: # - dbdata:/var/lib/mysql networks: diff --git a/dockerfiles/Dockerfile.PostgreSQL b/dockerfiles/Dockerfile.PostgreSQL index e0755a8d..2c6b1e05 100644 --- a/dockerfiles/Dockerfile.PostgreSQL +++ b/dockerfiles/Dockerfile.PostgreSQL @@ -6,8 +6,12 @@ # By: apommier +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/03/19 09:28:30 by apommier #+# #+# # -# Updated: 2023/03/19 11:24:21 by apommier ### ########.fr # +# Updated: 2023/03/22 18:45:25 by apommier ### ########.fr # # # # **************************************************************************** # -FROM postgres:latest \ No newline at end of file +FROM postgres:latest +COPY database/init.sql /docker-entrypoint-initdb.d/ +# RUN sed -i 's/bind-address/bind-address = 0.0.0.0 #/i' /etc/mysql/mariadb.conf.d/50-server.cnf +EXPOSE 5432 +CMD ["postgres"] \ No newline at end of file diff --git a/dockerfiles/Dockerfile.backEnd b/dockerfiles/Dockerfile.backEnd index c92b9e98..0af5a924 100644 --- a/dockerfiles/Dockerfile.backEnd +++ b/dockerfiles/Dockerfile.backEnd @@ -6,7 +6,7 @@ # By: apommier +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2023/03/19 09:28:33 by apommier #+# #+# # -# Updated: 2023/03/22 12:14:35 by apommier ### ########.fr # +# Updated: 2023/03/22 19:40:22 by apommier ### ########.fr # # # # **************************************************************************** # @@ -30,5 +30,8 @@ RUN npm install #npm install body-parser COPY /backend/ . EXPOSE 5000 +# RUN curl -o /usr/wait-for-it.sh https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh +# CMD ["/usr/wait-for-it.sh", "postgresql:5432", "--", "node", "server.js"] # CMD ["npm", "start"] +CMD dockerize -wait tcp://postgresql:5432 -timeout 60s CMD ["node", "server.js"]