Hola amigos de la #nerdytud
Hoy quiero compartirles una forma rápida y sencilla para crear containers de mongo y node comunicados entre sí, con docker compose
Crear aplicación en node
const express = require('express')
const mongoose = require('mongoose')
const User = mongoose.model(
'User',
new mongoose.Schema({
name: String,
rol: String,
}),
)
const app = express()
mongoose.connect('mongodb://admin:pass1234@mymongo:27017/test?authSource=admin')
app.get('/', async (req, res) => {
const users = await User.find()
return res.send(users)
})
app.get('/create', async (req, res) => {
await User.create({
name: 'Gabriel',
rol: 'dev',
})
return res.status(200).json({
message: 'ok',
User,
})
})
app.listen(3000, () => console.log('server ejecutándose en port 3000'))
Generar Dockerfile
FROM node:18
RUN mkdir -p /home/app
COPY . /home/app
EXPOSE 3000
CMD ["node", "/home/app/app.js"]
Generar docker-compose.yml
version: '3.9'
services:
myapp:
image: node:18
build: .
ports:
- '3000:3000'
links:
- mymongo
mymongo:
image: mongo
ports:
- '27017:27017'
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=pass1234
Crear containers
docker compose up
Corroborar funcionamiento
Destruir containers
docker compose down