PROJECT STRUCTURE
my-app/
├── docker-compose.yml
├── backend/
│ ├── Dockerfile
│ ├── package.json
│ └── index.js
docker-compose.yml
version: '3.8'
services:
backend:
build: ./backend
ports:
- "3000:3000"
environment:
- MONGO_URL=mongodb://mongo:27017/mydb
depends_on:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
volumes:
mongo-data:
A Simple Node.js Backend (backend/index.js)
const express = require('express');
const mongoose = require('mongoose');
const app = express();
const port = 3000;
mongoose.connect(process.env.MONGO_URL, {
useNewUrlParser: true,
useUnifiedTopology: true
}).then(() => {
console.log('Connected to MongoDB');
}).catch(err => {
console.error('MongoDB connection error:', err);
});
app.get('/', (req, res) => {
res.send('Hello from Docker Compose setup!');
});
app.listen(port, () => {
console.log(App running on http://localhost:${port}
);
});
Backend Dockerfile (backend/Dockerfile)
FROM node:18
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["node", "index.js"]
Run Project from the project root
docker-compose up --build
Clean Up
docker-compose down -v
Top comments (0)