Cómo crear containers con docker compose

Cómo crear containers con docker compose

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

http://localhost:3000

http://localhost:3000/create

Destruir containers

docker compose down