feat: restructure ht-docker-tools repository with enhanced Deno support and NVM integration
- Removed Dockerfile and added multiple Dockerfiles for various tools (ClickHouse, MongoDB, MinIO, Caddy, Redis) with Deno runtime. - Updated package.json to reflect new repository structure and versioning. - Added comprehensive README and technical notes for architecture overview and usage. - Implemented build and test scripts for streamlined image creation and validation. - Introduced bash scripts for NVM functionality in Docker images.
This commit is contained in:
183
readme.md
183
readme.md
@@ -0,0 +1,183 @@
|
||||
# ht-docker-tools
|
||||
|
||||
Docker images for various tools (MongoDB, MinIO, ClickHouse, Caddy, Redis) enhanced with Deno runtime support.
|
||||
|
||||
## Available Images
|
||||
|
||||
### Official Base Images
|
||||
|
||||
These images extend official Docker images with Deno runtime:
|
||||
|
||||
| Image | Base | Description |
|
||||
|-------|------|-------------|
|
||||
| `ht-docker-tools:clickhouse` | clickhouse/clickhouse-server | ClickHouse + Deno |
|
||||
| `ht-docker-tools:mongodb` | mongo:latest | MongoDB + Deno |
|
||||
| `ht-docker-tools:minio` | minio/minio:latest | MinIO + Deno |
|
||||
| `ht-docker-tools:caddy` | caddy:latest | Caddy + Deno |
|
||||
| `ht-docker-tools:redis` | redis:latest | Redis + Deno |
|
||||
|
||||
### Alpine Images
|
||||
|
||||
Lightweight Alpine-based images with full NVM + Node.js + Deno support:
|
||||
|
||||
| Image | Description | Size |
|
||||
|-------|-------------|------|
|
||||
| `ht-docker-tools:clickhouse-alpine` | ClickHouse + NVM + Node.js + Deno | ~250MB |
|
||||
| `ht-docker-tools:mongodb-alpine` | MongoDB + NVM + Node.js + Deno | ~200MB |
|
||||
| `ht-docker-tools:minio-alpine` | MinIO + NVM + Node.js + Deno | ~200MB |
|
||||
| `ht-docker-tools:caddy-alpine` | Caddy + NVM + Node.js + Deno | ~200MB |
|
||||
| `ht-docker-tools:redis-alpine` | Redis + NVM + Node.js + Deno | ~200MB |
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Using Official Base Images
|
||||
|
||||
```bash
|
||||
# MongoDB with Deno scripting
|
||||
docker run -d --name mongo ht-docker-tools:mongodb
|
||||
|
||||
# Execute Deno script inside container
|
||||
docker exec mongo deno run --allow-net script.ts
|
||||
|
||||
# Redis with Deno
|
||||
docker run -d --name redis ht-docker-tools:redis
|
||||
```
|
||||
|
||||
### Using Alpine Images
|
||||
|
||||
```bash
|
||||
# MongoDB Alpine with Node.js and Deno
|
||||
docker run -d --name mongo-alpine ht-docker-tools:mongodb-alpine
|
||||
|
||||
# Use Node.js
|
||||
docker exec mongo-alpine bash -c "node --version"
|
||||
|
||||
# Use Deno
|
||||
docker exec mongo-alpine bash -c "deno --version"
|
||||
|
||||
# Switch Node versions with NVM
|
||||
docker exec mongo-alpine bash -c "nvm install 18 && nvm use 18 && node --version"
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
### Official Base Images
|
||||
- Extend official Docker images (MongoDB, MinIO, ClickHouse, Caddy, Redis)
|
||||
- Add Deno runtime for scripting and automation
|
||||
- Preserve original image entrypoints and configurations
|
||||
- Ideal for production use with existing configurations
|
||||
|
||||
### Alpine Images
|
||||
- Lightweight Alpine-based (significantly smaller than official images)
|
||||
- Full NVM support for Node.js version switching
|
||||
- Node.js LTS (20.18.2) pre-installed
|
||||
- Deno runtime included
|
||||
- Multi-architecture support (amd64/arm64)
|
||||
- Ideal for CI/CD and development environments
|
||||
|
||||
## Docker Compose Example
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
mongodb:
|
||||
image: code.foss.global/host.today/ht-docker-tools:mongodb-alpine
|
||||
ports:
|
||||
- "27017:27017"
|
||||
volumes:
|
||||
- mongodb_data:/data/db
|
||||
command: mongod
|
||||
|
||||
redis:
|
||||
image: code.foss.global/host.today/ht-docker-tools:redis-alpine
|
||||
ports:
|
||||
- "6379:6379"
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
command: redis-server
|
||||
|
||||
minio:
|
||||
image: code.foss.global/host.today/ht-docker-tools:minio-alpine
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9001:9001"
|
||||
environment:
|
||||
MINIO_ROOT_USER: minioadmin
|
||||
MINIO_ROOT_PASSWORD: minioadmin
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
command: minio server /data --console-address ":9001"
|
||||
|
||||
caddy:
|
||||
image: code.foss.global/host.today/ht-docker-tools:caddy-alpine
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||
- caddy_data:/data
|
||||
- caddy_config:/config
|
||||
|
||||
volumes:
|
||||
mongodb_data:
|
||||
redis_data:
|
||||
minio_data:
|
||||
caddy_data:
|
||||
caddy_config:
|
||||
```
|
||||
|
||||
## Building Images Locally
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://code.foss.global/host.today/ht-docker-tools.git
|
||||
cd ht-docker-tools
|
||||
|
||||
# Build all images
|
||||
chmod +x build-images.sh
|
||||
./build-images.sh
|
||||
|
||||
# Test all images
|
||||
chmod +x test-images.sh
|
||||
./test-images.sh
|
||||
```
|
||||
|
||||
## Multi-Architecture Support
|
||||
|
||||
All Alpine images support both `linux/amd64` and `linux/arm64` architectures.
|
||||
|
||||
For CI/CD multi-arch builds:
|
||||
|
||||
```bash
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
-f Dockerfile_mongodb_alpine \
|
||||
-t code.foss.global/host.today/ht-docker-tools:mongodb-alpine \
|
||||
--push .
|
||||
```
|
||||
|
||||
## NVM Usage (Alpine Images)
|
||||
|
||||
Alpine images include NVM for Node.js version management:
|
||||
|
||||
```bash
|
||||
# Check NVM version
|
||||
docker run --rm ht-docker-tools:redis-alpine bash -c "nvm --version"
|
||||
|
||||
# Install specific Node.js version
|
||||
docker run --rm ht-docker-tools:redis-alpine bash -c "nvm install 18 && node --version"
|
||||
|
||||
# Use in Dockerfile
|
||||
FROM code.foss.global/host.today/ht-docker-tools:mongodb-alpine
|
||||
RUN nvm install 18 && nvm use 18 && npm install -g typescript
|
||||
```
|
||||
|
||||
## Registry
|
||||
|
||||
Images are available at:
|
||||
- `code.foss.global/host.today/ht-docker-tools`
|
||||
|
||||
## License
|
||||
|
||||
MIT - Task Venture Capital GmbH
|
||||
|
||||
Reference in New Issue
Block a user