diff --git a/z1/backend/Dockerfile b/z1/backend/Dockerfile new file mode 100644 index 0000000..9db1afa --- /dev/null +++ b/z1/backend/Dockerfile @@ -0,0 +1,9 @@ +FROM node:18 + +WORKDIR /app + +COPY server.js . + +RUN npm init -y && npm install express pg cors + +CMD ["node", "server.js"] \ No newline at end of file diff --git a/z1/backend/server.js b/z1/backend/server.js new file mode 100644 index 0000000..0b6f15e --- /dev/null +++ b/z1/backend/server.js @@ -0,0 +1,44 @@ +const express = require('express'); +const cors = require('cors'); +const { Pool } = require('pg'); + +const app = express(); + +app.use(cors()); +app.use(express.json()); + +const pool = new Pool({ + host: 'db', + user: 'user', + password: 'password', + database: 'mydb', + port: 5432 +}); + +pool.query(` + CREATE TABLE IF NOT EXISTS users ( + id SERIAL PRIMARY KEY, + name TEXT + ) +`); + +app.post('/save', async (req, res) => { + const name = req.body.name; + + try { + await pool.query('INSERT INTO users(name) VALUES($1)', [name]); + res.send("Saved to DB: " + name); + } catch (err) { + console.error(err); + res.status(500).send("Error"); + } +}); + +app.get('/users', async (req, res) => { + const result = await pool.query('SELECT * FROM users'); + res.json(result.rows); +}); + +app.listen(3000, () => { + console.log('Backend running on port 3000'); +}); \ No newline at end of file diff --git a/z1/docker-compose.yaml b/z1/docker-compose.yaml new file mode 100644 index 0000000..33652f1 --- /dev/null +++ b/z1/docker-compose.yaml @@ -0,0 +1,41 @@ +services: + db: + image: postgres:15 + volumes: + - db_data:/var/lib/postgresql/data + environment: + POSTGRES_USER: user + POSTGRES_PASSWORD: password + POSTGRES_DB: mydb + restart: always + + adminer: + image: adminer + restart: always + ports: + - "8081:8080" + depends_on: + - db + + web: + image: nginx:latest + restart: always + ports: + - "8080:80" + volumes: + - ./frontend:/usr/share/nginx/html + + backend: + build: ./backend + restart: always + ports: + - "5000:3000" + depends_on: + - db + environment: + DB_HOST: db + DB_USER: user + DB_PASSWORD: password + DB_NAME: mydb +volumes: + db_data: diff --git a/z1/frontend/index.html b/z1/frontend/index.html new file mode 100644 index 0000000..0fad0d1 --- /dev/null +++ b/z1/frontend/index.html @@ -0,0 +1,49 @@ +