This page explains how to deploy the FTGO application on your local machine using Docker Compose. It covers the required environment variables, how to build the services, start the full stack — including infrastructure services like MySQL, Kafka, and Zipkin — and how to tear everything down when you’re done.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/microservices-patterns/ftgo-application/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you begin, make sure you have the following installed and available:- Java 8 or later — required to run the Gradle build
- Docker and Docker Compose — required to build images and start containers
- 16 GB RAM — the application runs many services simultaneously; a 16 GB machine (such as a 16 GB MacBook Pro) is recommended
- Internet access — Gradle and Docker need to download dependencies and container images
Environment variables
Thedocker-compose.yml file references several version variables that must be set before running any Compose commands. These are defined in gradle.properties:
| Variable | Value in gradle.properties | Purpose |
|---|---|---|
EVENTUATE_COMMON_VERSION | 0.15.0.RELEASE | Eventuate Common library and images |
EVENTUATE_MESSAGING_KAFKA_IMAGE_VERSION | 0.15.0.RELEASE | Eventuate Kafka Docker image |
EVENTUATE_CDC_VERSION | 0.13.0.RELEASE | Eventuate CDC service image |
EVENTUATE_JAVA_BASE_IMAGE_VERSION | BUILD-15 | Base Java image for service builds |
composeUp task reads these from gradle.properties automatically. You do not need to export them manually when using Gradle.
Setting DOCKER_HOST_IP
On most systems (Docker for Mac, Docker for Windows, Docker Desktop on Linux), containers are accessible vialocalhost and you do not need to set DOCKER_HOST_IP.
If you are using Docker Toolbox or running Docker on a remote machine, set DOCKER_HOST_IP to the IP address that is reachable by both your host machine and Docker containers. Do not use localhost, 127.0.0.1, or an unresolvable hostname.
The quickest way to set it is to source the provided script:
DOCKER_HOST if it is set (as Docker Toolbox does), and also sets COMPOSE_HTTP_TIMEOUT=240 to prevent timeouts during slow image pulls.
You can verify your DOCKER_HOST_IP value is reachable from containers with:
Deploying the application
Build Spring Cloud Contracts
Run the following command from the repository root to generate the Spring Cloud Contract stubs:
Start the full stack
Start all infrastructure and application services using the Gradle Compose plugin:This command starts both the infrastructure services and all FTGO application services defined in
Note the leading
: in :composeUp — this targets the root project task. Starting all containers can take several minutes on the first run as Docker pulls images.docker-compose.yml.Infrastructure services
composeUp starts the following infrastructure services alongside the application:
| Service | Image | Port |
|---|---|---|
| Zookeeper | eventuateio/eventuate-zookeeper | 2181 |
| Kafka | eventuateio/eventuate-kafka | 9092 |
| MySQL | Built from ./mysql | 3306 |
| DynamoDB Local | Built from ./dynamodblocal | 8000 |
| Zipkin | openzipkin/zipkin:2.21 | 9411 |
| CDC Service | eventuateio/eventuate-cdc-service | 8099 |
| Kafka GUI (Kowl) | quay.io/cloudhut/kowl | 9088 |
ftgo_consumer_service, ftgo_order_service, ftgo_kitchen_service, ftgo_restaurant_service, ftgo_accounting_service, ftgo_delivery_service, and ftgoorderhistoryservice — and publishes events to Kafka.
Application service ports
Once running, the FTGO services are available on the following ports:| Service | Host port | Swagger UI |
|---|---|---|
ftgo-consumer-service | 8081 | http://localhost:8081/swagger-ui/index.html |
ftgo-order-service | 8082 | http://localhost:8082/swagger-ui/index.html |
ftgo-kitchen-service | 8083 | http://localhost:8083/swagger-ui/index.html |
ftgo-restaurant-service | 8084 | http://localhost:8084/swagger-ui/index.html |
ftgo-accounting-service | 8085 | http://localhost:8085/swagger-ui/index.html |
ftgo-order-history-service | 8086 | http://localhost:8086/swagger-ui/index.html |
ftgo-api-gateway | 8087 | No Swagger UI — use curl |
ftgo-delivery-service | 8089 | http://localhost:8089/swagger-ui/index.html |
If containers are not accessible via
localhost (for example, when using Docker Toolbox), replace localhost with ${DOCKER_HOST_IP} in all URLs above.curl or a tool like Postman to call it directly.
Stopping the application
To stop all containers and remove them:Troubleshooting
Containers not accessible via localhost
If you are using Docker Toolbox, Docker runs in a VirtualBox VM and your containers are not reachable atlocalhost. You must set DOCKER_HOST_IP to the VM’s IP address:
${DOCKER_HOST_IP} instead of localhost when accessing service URLs or configuring environment variables.
Compose HTTP timeout errors
If you see timeout errors duringcomposeUp, the set-env.sh script sets COMPOSE_HTTP_TIMEOUT=240 (240 seconds) to give slow image pulls more time to complete:
Services fail to start
Services depend on MySQL, Kafka, and the CDC service being ready. If a service exits early, wait for the infrastructure containers to be fully healthy and re-runcomposeUp. The CDC service itself depends on both MySQL and Kafka.