Files
ht-docker-tools/readme.md

184 lines
4.5 KiB
Markdown
Raw Normal View History

# 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