A Docker-based development stack with Node.js, Express.js, and MySQL.
mysql-node-stack/
├── docker-compose.yaml # Docker services configuration
├── Dockerfile # Node.js container definition
├── package.json # Node.js dependencies
├── init.sql # Database initialization script
├── utfconf.cnf # MySQL UTF-8 configuration
├── .env # Environment variables
├── root_password # MySQL root password (secret)
├── database_password # MySQL database password (secret)
└── src/
├── index.js # Express.js application
└── connectDatabase.js # MySQL connection utility
-
Start the stack:
docker-compose up --build
-
Access the application:
- App: http://localhost:8000
- MySQL: localhost:3309
-
Stop the stack:
docker-compose down
-
Stop and remove volumes:
docker-compose down -v
The src/ folder is mounted as a volume, so changes will be reflected. For hot-reload during development, you can modify the Dockerfile CMD to use npm run dev (uses nodemon).
Configure in .env:
MYSQL_HOST- MySQL hostname (default: db_1)MYSQL_USER- MySQL username (default: root)MYSQL_DATABASE- MySQL Database name (default: example)MYSQL_PASSWORD- MySQL Database password (default : admin)PORT- Express server port (default: 3000)
- express - Web framework
- mysql2 - MySQL client with Promise support
- dotenv - Environment variable loader
- winston - Logging library
- nodemon - Development hot-reload (dev dependency)