first commit
This commit is contained in:
24
Dockerfile
Normal file
24
Dockerfile
Normal file
@@ -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" ]
|
||||
24
docker-compose.yml
Normal file
24
docker-compose.yml
Normal file
@@ -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: <port-host>:<port-container>
|
||||
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
|
||||
13
package-lock.json
generated
Normal file
13
package-lock.json
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "express",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "express",
|
||||
"version": "1.0.0",
|
||||
"license": "ISC"
|
||||
}
|
||||
}
|
||||
}
|
||||
14
package.json
Normal file
14
package.json
Normal file
@@ -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": ""
|
||||
}
|
||||
0
src/db/connection.js
Normal file
0
src/db/connection.js
Normal file
22
src/server.js
Normal file
22
src/server.js
Normal file
@@ -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}`);
|
||||
});
|
||||
Reference in New Issue
Block a user