JOpt TourOptimizer on Apple Platforms (macOS)
This document describes how to host JOpt TourOptimizer locally on Apple systems running macOS.
It is intended for developers, system engineers, and integrators who want to run JOpt on Apple hardware (including Apple Silicon) for development, testing, or small on-premise deployments.
Note: Hosting server-side Spring applications directly on iOS is not supported due to platform restrictions. This document therefore focuses on macOS, which is the appropriate Apple platform for running containerized backend services.
System Requirements
The following prerequisites are required:
- macOS 12 or newer (Intel or Apple Silicon)
- Docker-compatible container runtime
- Apple Silicon (M1/M2/M3) or Intel x86_64 CPU
- Minimum recommended resources:
- CPU: 2 cores
- Memory: 4 GB RAM
No additional virtualization configuration is required beyond what the container runtime provides.
Deployment Model
On macOS, JOpt TourOptimizer runs as a containerized Spring application:
- Exposes REST APIs over HTTP
- Uses environment variables or configuration files for configuration
- Writes logs to standard output
- Runs as a single-node deployment
This model is well suited for:
- Local development
- Integration testing
- Demonstrations
- Small-scale on-premise usage
Container Runtime Setup
Install a Docker-compatible container runtime for macOS (for example Docker Engine–based or Podman-based solutions).
After installation, verify that the runtime is available:
docker version
Ensure that the container runtime is running before proceeding.
Running JOpt TourOptimizer
Basic Startup
Start JOpt TourOptimizer using the following command:
docker run \
--name jopt-touroptimizer \
-p 8080:8080 \
dna-evolutions/jopt-touroptimizer:latest
Once started, the application is reachable at:
http://localhost:8080
Configuration
Environment-Based Configuration
JOpt follows standard Spring configuration conventions.
Example:
docker run \
--name jopt-touroptimizer \
-p 8080:8080 \
-e SPRING_PROFILES_ACTIVE=macos \
-e JOPT_LICENSE_KEY=<license-key> \
dna-evolutions/jopt-touroptimizer:latest
Configuration via Files
Configuration files can be mounted into the container:
docker run \
--name jopt-touroptimizer \
-p 8080:8080 \
-v /Users/<user>/jopt/config/application.yml:/app/config/application.yml:ro \
dna-evolutions/jopt-touroptimizer:latest
Spring Boot automatically detects configuration files in standard locations.
Apple Silicon Considerations
On Apple Silicon systems:
- Ensure that the container image supports
linux/arm64 - If multi-architecture images are used, the correct architecture is selected automatically
- Emulated
amd64images are supported but may result in reduced performance
For compute-intensive optimization workloads, native ARM64 images are strongly recommended.
Resource Management
Limit resource usage explicitly to avoid system contention:
docker run \
--name jopt-touroptimizer \
-p 8080:8080 \
--cpus="2.0" \
--memory="4g" \
dna-evolutions/jopt-touroptimizer:latest
Logging and Health Monitoring
Logs
Access application logs using:
docker logs jopt-touroptimizer
Logs are written to standard output and integrate naturally with container tooling.
Health Endpoints
If Spring Boot Actuator is enabled, health endpoints can be used for monitoring:
/actuator/health/actuator/health/liveness/actuator/health/readiness
Networking and Security
- Expose the service only on required interfaces
- Prefer
localhostbindings for development - Use HTTPS if the service is exposed beyond the local machine
- Never embed license keys directly in scripts or shell history
Updates and Lifecycle Management
To update JOpt TourOptimizer:
docker pull dna-evolutions/jopt-touroptimizer:<version>
docker stop jopt-touroptimizer
docker rm jopt-touroptimizer
docker run ...
Always validate new versions before replacing existing installations.
Limitations
- macOS deployments are intended for local or small-scale use
- High availability and horizontal scaling require Kubernetes
- iOS devices are not supported as hosting platforms
Summary
Running JOpt TourOptimizer on macOS provides a convenient and reliable setup for Apple-based development and on-premise scenarios. The containerized Spring architecture ensures consistent behavior across macOS, Linux, and Kubernetes environments.
For production-grade, scalable deployments, Kubernetes remains the recommended platform.