feat: initialize backend environment with Docker setup and configuration files

This commit is contained in:
2025-06-29 19:10:43 +02:00
parent d116715aae
commit c165a0f71b
6 changed files with 79 additions and 3 deletions

3
.gitignore vendored
View File

@@ -1,6 +1,3 @@
backend/.env
# Ignore environment files
index.html
# Ignore frontend dev file

View File

View File

@@ -0,0 +1,30 @@
# Login page
This is an app which I am currently working on...
## How to run?
1. Install docker on your machine
2. Then run the docker-compose file and make sure that port ```4000``` and ```3306``` are not in use.
3. Then enter the mysql container (exec) with the credentials that you can see in the ```docker-compose.yml``` file and in the ```.env``` file.
4. Then login with the root user with ```mysql -u root -p```, after that enter the password from the ```docker-compose.yml``` file or the ```.env``` file.
5. Then type ```use login_page;```
6. Then create a table with the following scheme (extract from scheme.sql):
``` sql
-- Table structure for the database
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created TIMESTAMP NOT NULL DEFAULT NOW()
);
-- Mock data for users
INSERT INTO users (username, first_name, last_name, email, password)
VALUES
('test1', 'John', 'Doe', 'jdoe@example.com', '1test'),
('test2', 'Alice', 'Smith', 'asmith@example.com', '2test');
```
If you are confident with sql you can change the mock data, and create your own user.

4
backend/.env Executable file
View File

@@ -0,0 +1,4 @@
DB_HOST=mysql
DB_USER=root
DB_PASSWORD=D7Ze0lwV9hMrNQHdz1Q8yi0MIQuOO8
DB_NAME=login_page

12
backend/Dockerfile Normal file
View File

@@ -0,0 +1,12 @@
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 4000
CMD ["npm", "start"]

View File

@@ -0,0 +1,33 @@
version: '3.9'
services:
backend:
container_name: login-page
build: ./backend
ports:
- "4000:4000"
environment:
DB_HOST: mysql
DB_USER: root
DB_PASSWORD: D7Ze0lwV9hMrNQHdz1Q8yi0MIQuOO8
DB_NAME: login_page
depends_on:
- mysql
volumes:
- ./backend:/app
restart: unless-stopped
mysql:
container_name: mysql-db
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: D7Ze0lwV9hMrNQHdz1Q8yi0MIQuOO8
MYSQL_DATABASE: login_page
volumes:
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
volumes:
mysql-data: