mirror of
https://github.com/BetterCorp/docker-node.git
synced 2026-07-25 14:16:48 +00:00
No description
- Dockerfile 65%
- Shell 35%
| .github/workflows | ||
| .gitignore | ||
| devcontainer.json | ||
| docker-entrypoint.sh | ||
| Dockerfile | ||
| Dockerfile.dev | ||
| Dockerfile.devcontainer | ||
| Dockerfile.dind | ||
| install_packages.sh | ||
| LICENSE | ||
| package-lock.json | ||
| README.md | ||
docker-node
Better Node.js Docker images with multiple specialized variants for different development and production needs.
Available Images
Base Images
betterweb/node:latest- Latest stable Node.js on Alpine Linux (currently 24.x)betterweb/node:24- Node.js 24.x (major version)betterweb/node:24.0.0- Specific Node.js version
Development Variants
betterweb/node:dev- Development image with additional tools (not for production)betterweb/node:dev-24- Development image for Node.js 24.xbetterweb/node:dev-24.0.0- Development image for specific version
DevContainer Variants
betterweb/node:devcontainer-latest- VS Code DevContainer with development toolsbetterweb/node:devcontainer-24- DevContainer for Node.js 24.xbetterweb/node:devcontainer-24.0.0- DevContainer for specific version
Docker-in-Docker (DIND) Variants
betterweb/node:dind-latest- Node.js with Docker and Docker Compose supportbetterweb/node:dind-24- DIND for Node.js 24.xbetterweb/node:dind-24.0.0- DIND for specific version
Usage
Running from Command Line
Basic Node.js Container
# Run latest Node.js version
docker run -it betterweb/node:latest
# Run specific version
docker run -it betterweb/node:24
# Run with mounted volume for development
docker run -it -v $(pwd):/app -w /app betterweb/node:24 npm start
# Run with port mapping
docker run -it -p 3000:3000 -v $(pwd):/app -w /app betterweb/node:24 node server.js
Development Container
# Interactive development environment
docker run -it -v $(pwd):/app -w /app betterweb/node:dev-24 bash
# Install packages with native dependencies
docker run -it -v $(pwd):/app -w /app betterweb/node:dev-24 install_packages "bcrypt sharp"
# Run development server with live reload
docker run -it -p 3000:3000 -v $(pwd):/app -w /app betterweb/node:dev-24 npm run dev
Docker-in-Docker Container
# Run with Docker socket access (Linux/macOS)
docker run -it --privileged -v /var/run/docker.sock:/var/run/docker.sock betterweb/node:dind-24 bash
# Run CI/CD pipeline
docker run -it --privileged -v $(pwd):/app -w /app betterweb/node:dind-24 npm test
DevContainer Usage
# Interactive DevContainer environment
docker run -it -v $(pwd):/workspace -w /workspace betterweb/node:devcontainer-24 bash
# With VS Code DevContainer extension (use in .devcontainer/devcontainer.json)
Dockerfile Examples
Basic Node.js Application
FROM betterweb/node:24
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
CMD ["node", "index.js"]
Development Environment
FROM betterweb/node:dev-24
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "dev"]
Using install_packages for Native Dependencies
The dev variant includes a helper script for installing packages with native dependencies:
FROM betterweb/node:dev-24
WORKDIR /app
COPY package*.json ./
# Use install_packages for packages that need compilation
RUN install_packages "bcrypt canvas sharp"
COPY . .
CMD ["npm", "run", "dev"]
Docker-in-Docker for CI/CD
FROM betterweb/node:dind-24
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
# Can run docker commands within this container
RUN docker --version
CMD ["npm", "test"]
DevContainer Configuration
For VS Code DevContainers, use in .devcontainer/devcontainer.json:
{
"name": "Node.js DevContainer",
"image": "betterweb/node:devcontainer-24",
"features": {},
"forwardPorts": [3000],
"postCreateCommand": "npm install"
}
Image Features
Base Image (betterweb/node)
- Alpine Linux base for minimal size
- Node.js installed from official sources
gosufor proper user privilege handling- Custom entrypoint script
- Non-root
nodeuser
Development Image (dev-*)
- Built on top of base image
- Includes
install_packagesscript for easy npm package installation with native dependencies - Pre-configured build tools (python, make, g++) for compiling native modules
- Not recommended for production use
DevContainer Image (devcontainer-*)
- Debian-based for broader tool compatibility
- Pre-installed development tools (git, curl, make, g++, python3)
- Sudo access for the
nodeuser - Optimized for VS Code DevContainer environments
DIND Image (dind-*)
- Built on top of base Alpine image
- Docker Engine and Docker CLI installed
- Docker Compose v2 support
- Runs dockerd in background
- User added to docker group
Version Matrix
Images are built for multiple Node.js versions:
- Base images: All supported Node.js versions (currently 18.x, 20.x, 21.x, 22.x, 23.x, 24.x)
- Specialized variants (dev, devcontainer, dind): Latest 3 major Node.js versions (currently 22.x, 23.x, 24.x)
- Update schedule: Monthly on the 1st of each month
Architecture Support
Multi-platform images supporting:
linux/amd64(x86_64)linux/arm64/v8(ARM64)
Security
- All images run as non-root
nodeuser by default - Regular security updates through automated builds
- Minimal attack surface with Alpine Linux base (except devcontainer)
- No secrets or credentials included in images
Build Process
Images are automatically built and published via GitHub Actions:
- prepare-matrix: Determines Node.js versions and platforms
- build: Builds base images for all versions
- build-dev: Builds development variants (limited versions)
- build-devcontainers: Builds VS Code DevContainer variants (limited versions)
- build-dind: Builds Docker-in-Docker variants (limited versions)
Contributing
This repository contains:
Dockerfile- Base Node.js imageDockerfile.dev- Development variantDockerfile.devcontainer- VS Code DevContainer variantDockerfile.dind- Docker-in-Docker variant.github/workflows/buildAndPub.yml- Automated build pipeline
License
This project follows the same license as the official Node.js Docker images.