Skip to content

Instantly share code, notes, and snippets.

@ksmithut
Last active May 13, 2024 19:41
Show Gist options
  • Save ksmithut/e126f7ddb40b760487a17e8b569a77b5 to your computer and use it in GitHub Desktop.
Save ksmithut/e126f7ddb40b760487a17e8b569a77b5 to your computer and use it in GitHub Desktop.
Node Docker Compose nodemon
node_modules

Reload node processes on file save in Docker

Run docker-compose up --build.

Make changes to index.js and see the server restart.

version: '3'
services:
app:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- ./:/usr/src/app
- /usr/src/app/node_modules # Remove this if you have pure JS dependencies
ports:
- "3000:3000"
FROM node:16-alpine
# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
# Install dependencies
COPY package.json .
RUN npm install
# Bundle app source
COPY index.js ./
# Exports
EXPOSE 3000
CMD [ "npm", "run", "start.dev" ]
'use strict'
const express = require('express')
const { PORT = '3000' } = process.env
const app = express()
app.use((req, res, next) => {
res.send('Hello Jack')
})
app.listen(PORT)
{
"main": "index.js",
"scripts": {
"start": "node index",
"start.dev": "nodemon"
},
"dependencies": {
"express": "^4.17.2"
},
"devDependencies": {
"nodemon": "^2.0.15"
}
}
@akramsameer
Copy link

For those who are having the issue of it not updating you must start nodemon with the -L flag to catch file changes

That worked for thank you ❤️

@ahashem
Copy link

ahashem commented Aug 21, 2023

-L alone didn't help me. adding specific config file nodemon.json or config within package.json can help

{
    "ext": "js,json,ts",
    "watch": ["src"],
    "ignore": ["node_modules/**/node_modules"],
    "exec": "ts-node ./src/index.ts",
    "verbose": true,
    "legacyWatch": true,
    "env": {
        "NODE_ENV": "development"
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment