From 3e43db51d336ab810f7b69b3920271107d6d2924 Mon Sep 17 00:00:00 2001 From: effendy Date: Wed, 26 Nov 2025 07:12:51 +0000 Subject: [PATCH] first commit --- .env | 1 + Dockerfile | 24 ++++++++++++++++++++++++ docker-compose.yml | 24 ++++++++++++++++++++++++ package-lock.json | 13 +++++++++++++ package.json | 14 ++++++++++++++ src/db/connection.js | 0 src/server.js | 22 ++++++++++++++++++++++ 7 files changed, 98 insertions(+) create mode 100644 .env create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/db/connection.js create mode 100644 src/server.js diff --git a/.env b/.env new file mode 100644 index 0000000..57727ee --- /dev/null +++ b/.env @@ -0,0 +1 @@ +PORT=4000 \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0a9bc77 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ + +FROM node:22.14.0-alpine AS builder + +# Set working directory +WORKDIR /app + +# Salin package.json dan package-lock.json +COPY package*.json ./ + +# Install dependencies +RUN npm install + +# Salin semua file source code +COPY . . + +# (Opsional) Jalankan sebagai non-root user +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +USER appuser + +# Ekspos port +EXPOSE 4000 + +# Perintah untuk menjalankan aplikasi +CMD [ "node", "src/server.js" ] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b645881 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,24 @@ +# docker-compose.yml +version: '3.8' + +services: + # Service untuk aplikasi Node.js + app: + container_name: express-test + # Build image dari Dockerfile di direktori saat ini + build: + context: . + dockerfile: Dockerfile + # Port mapping: : + ports: + - "4000:4000" + # Variabel lingkungan yang dibutuhkan oleh aplikasi + environment: + - PORT=4000 + - DB_HOST=database + - DB_PORT=5432 + - DB_USER=postgres + - DB_PASSWORD=postgres_password + - DB_NAME=tododb + # Restart policy + restart: unless-stopped \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2e6fae6 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "express", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "express", + "version": "1.0.0", + "license": "ISC" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7e277a0 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node src/server.js", + "dev": "nodemon src/server.js" + }, + "name": "express", + "version": "1.0.0", + "main": "index.js", + "keywords": [], + "author": "", + "license": "ISC", + "description": "" +} diff --git a/src/db/connection.js b/src/db/connection.js new file mode 100644 index 0000000..e69de29 diff --git a/src/server.js b/src/server.js new file mode 100644 index 0000000..947a452 --- /dev/null +++ b/src/server.js @@ -0,0 +1,22 @@ +// src/server.js +require('dotenv').config(); +const express = require('express'); + +const app = express(); +const PORT = process.env.PORT || 4000; + +// Middleware +app.use(express.json()); // Untuk parsing application/json + +// Routes +app.use('/todos', todoRoutes); + +// Root endpoint +app.get('/', (req, res) => { + res.json({ message: 'Welcome to the BACEND Todo API!' }); +}); + +// Start server +app.listen(PORT, () => { + console.log(`Server is running on port ${PORT}`); +}); \ No newline at end of file