Running a Node.js App in a Container – Migration Guide
Introduction
This guide shows how to migrate an existing Node.js application in mittwald mStudio from the classic Node.js app environment to a container.
Benefits of Container Migration
- System Dependencies: All required system binaries and tools are available
 - Reproducible Environment: Identical development and production environments
 - Flexibility: Free choice of base image and configuration
 
Prerequisites
- Access to a mittwald mStudio project
 - SSH access to the existing Node.js app
 - A hosting plan that supports containerized workloads
 
Migration Process
Step 1: Stop Current Node.js App
Connect to the Node.js app via SSH and stop the running application:
# Show processes
mittnitectl job list
# Output:
# The following processes are managed, and controllable:
#   ▶︎ node (running; reason=started; pid=203)
# Stop Node.js process
mittnitectl job stop node
# Output:
# ⏸️  stopping job node
# 🕑 waiting for job node to stop
# 😵 job node stopped
Step 2: Prepare Application Code
There are two options to prepare the application code for the container:
Option A: Duplicate Code in Project
Connect to the Node.js app via SSH and copy the directory:
# Example: Copy the application directory
# Note: Paths must be adjusted to your actual directory structure
cp -r /html/nodejs-app /html/nodejs-container
Option B: Redeploy Code
Transfer the files using your preferred method, e.g., Git, CI/CD pipeline, or manually via scp/rsync:
# Example with rsync
rsync -avz ./my-app/ user@server:/html/nodejs-container/
Step 3: Configure and Start Container
- 
Open mStudio and navigate to the project
 - 
Go to the container interface within your mStudio project and select "Create". Then configure:
Container Image:
node:24for a specific versionnode:ltsfor the current LTS version- Or any desired version number
 
Command:
# If code was duplicated (and yarn install was already executed):
sh -c "cd /app && yarn start"
# If code was redeployed (and yarn install has not been executed yet):
sh -c "cd /app && yarn install && yarn start"Volume Configuration:
- Path in Project: 
/html/nodejs-container(or the chosen directory) - Mount Point in Container: 
/app 
Environment Variables:
NODE_ENV=production
PORT=3000 # Port of your choicePort Configuration:
- Add the same port as for the environment variables
 
 
Step 4: Switch Domain
After successfully starting the container:
- Navigate to domain settings in mStudio
 - Change the domain's target from the Node.js app to the new container
 
Step 5: Verification and Cleanup
- Test the application via the domain
 - Check the container logs for errors
 - Monitoring: Observe the application for some time
 
Once everything works properly:
- Delete the old Node.js app from your project
 - Remove any unnecessary files
 
Troubleshooting
Container Won't Start
- Check the logs in mStudio
 - Ensure all environment variables are correctly set
 - Verify that the start command is correct
 
Application Not Reachable
- Check the port configuration
 - Ensure the application listens on the configured port
 - Verify domain settings
 
Missing Dependencies
If system dependencies are missing, consider:
- Using a different base image
 - Creating a custom Dockerfile with the required dependencies