Skip to content

Latest commit

 

History

History
395 lines (313 loc) · 7.24 KB

DOCKER_QUICKREF.md

File metadata and controls

395 lines (313 loc) · 7.24 KB

Docker Quick Reference for platform-java

Quick Start

One-liner to run platform-java:

docker run -p 8080:8080 flossware/platform-java:latest

Full stack with monitoring:

docker-compose up -d
# Platforms: API (8080), Prometheus (9091), Grafana (3000)

Image Variants

Image Command Size Use Case
Standard docker pull flossware/platform-java:latest 150-180 MB Full features
Alpine docker pull flossware/platform-java:latest-alpine 60-80 MB Lightweight

Common Commands

Run with REST API enabled:

docker run -p 8080:8080 flossware/platform-java:latest \
  --rest-api --port 8080

Run with configuration file:

docker run -p 8080:8080 \
  -v /path/to/platform.yaml:/app/config/platform.yaml \
  flossware/platform-java:latest

Run with persistent volumes:

docker run -p 8080:8080 \
  -v platform-apps:/app/apps \
  -v platform-logs:/app/logs \
  flossware/platform-java:latest

Run with custom JVM settings:

docker run -p 8080:8080 \
  -e JAVA_OPTS="-Xms1g -Xmx2g -XX:+UseG1GC" \
  flossware/platform-java:latest

Run with all ports exposed:

docker run -p 8080:8080 -p 9090:9090 -p 9999:9999 \
  flossware/platform-java:latest

Run in daemon mode:

docker run -d -p 8080:8080 \
  --name platform-java \
  flossware/platform-java:latest

Docker Compose

Start all services:

docker-compose up -d

View logs:

docker-compose logs -f platform-java

Stop services:

docker-compose down

Remove all data:

docker-compose down -v

Build Locally

Build standard image:

docker build -t my-platform-java:latest .

Build Alpine variant:

docker build -f Dockerfile.alpine -t my-platform-java:alpine .

Build with custom base:

docker build \
  --build-arg BASE_IMAGE=my-java:21-jre \
  -t my-platform-java .

Access Services

Service URL When Available
REST API http://localhost:8080/api Always (if enabled)
Web Console http://localhost:8080/console When API enabled
Prometheus http://localhost:9090 With docker-compose
Grafana http://localhost:3000 With docker-compose
Prometheus (alt port) http://localhost:9091 With docker-compose

Health Checks

Check container health:

docker ps --format "table {{.Names}}\t{{.Status}}"

Manual health check:

curl http://localhost:8080/api/health

View container logs:

docker logs platform-java
docker logs -f platform-java  # Follow logs
docker logs --tail 100 platform-java  # Last 100 lines

Registry Pulls

Docker Hub:

docker pull flossware/platform-java:latest
docker pull flossware/platform-java:1.1
docker pull flossware/platform-java:latest-alpine

GitHub Container Registry:

docker pull ghcr.io/FlossWare/platform-java:latest
docker pull ghcr.io/FlossWare/platform-java:1.1

Quay.io:

docker pull quay.io/flossware/platform-java:latest
docker pull quay.io/flossware/platform-java:1.1

Volume Management

Create volumes:

docker volume create platform-apps
docker volume create platform-logs

List volumes:

docker volume ls

Inspect volume:

docker volume inspect platform-apps

Remove volumes:

docker volume rm platform-apps platform-logs

Network Operations

Create custom network:

docker network create platform-net

Run on custom network:

docker run --network platform-net \
  --name platform-java \
  flossware/platform-java:latest

Connect container to network:

docker network connect platform-net container-id

Container Management

List containers:

docker ps                    # Running
docker ps -a                 # All

Stop/Start container:

docker stop platform-java
docker start platform-java

Remove container:

docker rm platform-java
docker rm -f platform-java  # Force remove

Execute command in container:

docker exec platform-java ls /app
docker exec -it platform-java /bin/bash

Copy files to/from container:

docker cp app.yaml platform-java:/app/apps/
docker cp platform-java:/app/logs/platform.log .

Image Management

List images:

docker images
docker images flossware/*

Tag image:

docker tag platform-java:test my-registry/platform-java:v1.0

Remove image:

docker rmi platform-java:test

Inspect image:

docker inspect flossware/platform-java:latest

Show image history:

docker history flossware/platform-java:latest

Debugging

Get container info:

docker inspect platform-java

Check container resource usage:

docker stats platform-java

View container processes:

docker top platform-java

Troubleshoot failed container:

# View last 100 lines of logs
docker logs --tail 100 platform-java

# Check exit code
docker inspect -f '{{.State.ExitCode}}' platform-java

# Run with --rm to auto-delete on exit
docker run --rm -it flossware/platform-java:latest

Environment Variables Quick Set

# Memory settings
-e JAVA_OPTS="-Xms512m -Xmx1024m"

# Configuration file
-e PLATFORM_CONFIG=/app/config/platform.yaml

# App directory
-e PLATFORM_APPS_DIR=/app/apps

# Logs directory
-e PLATFORM_LOGS_DIR=/app/logs

Common Issues

Container exits immediately:

# Check logs
docker logs platform-java

Port already in use:

# Use different port
docker run -p 8888:8080 flossware/platform-java:latest

High memory:

# Reduce JVM memory
docker run -e JAVA_OPTS="-Xms256m -Xmx512m" flossware/platform-java:latest

Health check failing:

# Check manually
curl -v http://localhost:8080/api/health

Cannot connect from host:

# Use host.docker.internal on Mac/Windows
# Use --network host on Linux
docker run --network host flossware/platform-java:latest

Performance Tuning

Limit resources:

docker run \
  --memory 2g \
  --cpus 2 \
  --memory-swap 4g \
  flossware/platform-java:latest

Enable restart policy:

docker run \
  --restart unless-stopped \
  flossware/platform-java:latest

Add read-only filesystem:

docker run \
  --read-only \
  --tmpfs /tmp \
  flossware/platform-java:latest

Docker Push to Registries

Docker Hub:

docker login
docker tag local-image:tag flossware/platform-java:tag
docker push flossware/platform-java:tag

GitHub Container Registry:

docker login ghcr.io
docker tag local-image:tag ghcr.io/FlossWare/platform-java:tag
docker push ghcr.io/FlossWare/platform-java:tag

Useful Aliases

Add to ~/.bashrc or ~/.zshrc:

alias dps='docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"'
alias dlogs='docker logs -f'
alias dexec='docker exec -it'
alias dstats='docker stats --no-stream'
alias dpull='docker pull flossware/platform-java:latest'

Reference

  • Full Documentation: See DOCKER.md
  • Implementation Guide: See DOCKER_IMPLEMENTATION.md
  • Project README: See README.md