DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

SBOMs are essential to circumventing software supply chain attacks, and they provide visibility into various software components.

Related

  • Docker Model Runner: Running AI Models Locally Made Simple
  • From Monolith to Containers: Real-World Migration Blueprint
  • Exploring the Horizon of Microservices With KubeMQ's New Control Center
  • Fast Deployments of Microservices Using Ansible and Kubernetes

Trending

  • Master AI Development: The Ultimate Guide to LangChain, LangGraph, LangFlow, and LangSmith
  • Understanding N-Gram Language Models and Perplexity
  • Evaluating Accuracy in RAG Applications: A Guide to Automated Evaluation
  • The Death of REST? Why gRPC and GraphQL Are Taking Over
  1. DZone
  2. Testing, Deployment, and Maintenance
  3. Deployment
  4. Foxx CLI - Managing Microservices

Foxx CLI - Managing Microservices

In this tutorial, you'll learn how to get started with the Foxx framework for managing microservices with the Foxx CLI.

By 
Mark Vollmary user avatar
Mark Vollmary
·
Apr. 26, 18 · Tutorial
Likes (3)
Comment
Save
Tweet
Share
4.7K Views

Join the DZone community and get the full member experience.

Join For Free

Anyone who has ever worked with our JavaScript framework Foxx was faced at some point with the challenge to install its Foxx service in its current ArangoDB instance or to replace the installed service with local code changes. This is not a big deal and can easily be done through ArangoDB's WebUI. However, we developers always want to become more productive and clicking through a graphical UI is not the best way. Furthermore, this procedure is almost impossible to use in an automated deployment process. That's why we decided to develop a node-based CLI tool to manage Foxx services, called Foxx-CLI, which we already released in version 1.1.

For all readers who have not tried Foxx until now, shame on you. No, seriously, you should really give it a try. Check out our Getting Started tutorial and come back here if you've written your first little Foxx service and would like to try it out in your running ArangoDB instance. If you have any question, join our #foxx channel in our Slack Community.

For those who are already in love with Foxx, let's get started with the new CLI...

Install

Since the Foxx-CLI is a node module, it is dead-easy to install it by using npm or yarn.

yarn

 yarn global add foxx-cli 

npm

 npm install --global foxx-cli 

Usage

Now we can already start. After you've installed the Foxx-CLI, you should be able to use the Foxx program. You can learn more about the different commands Foxx supports by using the --help flag.

 foxx --help 

Let's take a look at the most essential functionality - installing a Foxx service. For this we first switch to the directory of our Foxx service, where our manifest.json is located, and call the Foxx-CLI with the desired mountpoint, under which our service should be installed and accessible:

 cd my-service

foxx install /hello 

That was easy. By the way, we can install already bundled (zipped) services or specify a URL and download & install the service from there. In order to optimally support the workflow of a developer, it is of course also possible to switch on the development mode via the Foxx-CLI or to replace the installed service with your local files by a single command. Here everyone can work out for themselves the optimal procedure how to use the CLI.

Upgrade service with local files

 foxx upgrade /hello 

Enable development mode

 foxx set-dev /hello 

Bootstrapping

After the initial release 1.0 we have extended the Foxx CLI with the command init, which allows you to bootstrap your Foxx service. This command comes with two additional options which allow you to create your basic service resources based on specific user input or just create an example service.

Create a minimal service in your current working directory

 foxx init 

Create a hello world example service

 foxx init -e 

Answer interactive questions

 foxx init -i 

In addition, it is possible to generate boilerplate code for routers or scripts to your already existing local Foxx service.

Create and add a minimal router

 foxx add router <name>  

Create a router with crud operations for a given collection

 foxx add crud <collection>  

Why a CLI?

As already mentioned, many developers who work regularly with a terminal, prefer to type in their commands and are reluctant to clickclick themselves through a graphical UI. This is also more effective in most cases. But there are other cases where you can reach a technical limit with a WebUI, for example, keyword automation. We live in a time where everyone knows how important testing is. Nowadays, CI (continuous integration) is seen everywhere, and there are enough tools to support it. For some time already, these tools have also been using Docker more and more. For a CI tool or a Docker container, clicking through a WebUI is not an option. Here a CLI tool like Foxx-CLI fits just right.

Docker

Those of you who have run ArangoDB in Docker before may also already know the possibility to run shell scripts at initialization time of its ArangoDB instance within the container. This is the perfect environment in which our new Foxx CLI can unleash its potential. Here it is now possible to easily install your own or third-party Foxx services automatically in your running Docker ArangoDB instance and directly configure it. For some time now we have been offering alpin based Docker images, which are tagged by us as preview and are not officially published. These Docker images already include our Foxx CLI. So if you want you can start right here, but let me say again that this image is a preview release and we can not recommend to use it in production. Create a shell script, e.g. ./init-scripts/install-service.sh with the following content:

 foxx install /hello /opt/foxx-service 

When running a Docker container, based on our image arangodb/arangodb-preview:3.3, mount your shell script to /docker-entrypoint-initdb.d and your Foxx service directory to the one used in your shell script.

docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 \
-v $(pwd)/init-scripts:/docker-entrypoint-initdb.d \
-v $(pwd)/my-service:/opt/foxx-service \
arangodb/arangodb-preview:3.3

After running this command you should see the following output:

Initializing root user...Hang on...
Initializing database...Hang on...
/entrypoint.sh: running /docker-entrypoint-initdb.d/install-service.sh
Installed service at "/hello".
Database initialized...Starting System...

Congrats, you have successfully started a Docker container with a running ArangoDB instance with your Foxx service installed.

Future Plans

We are currently in the process of planning and implementing additional functionality which hopefully further simplifies your life with Foxx. To not create stuff you guys don't need, feedback is really appreciated to guide our efforts. Feel free to open feature requests, send us ideas and any other feedback on GitHub.

Command-line interface microservice Docker (software)

Published at DZone with permission of Mark Vollmary, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Docker Model Runner: Running AI Models Locally Made Simple
  • From Monolith to Containers: Real-World Migration Blueprint
  • Exploring the Horizon of Microservices With KubeMQ's New Control Center
  • Fast Deployments of Microservices Using Ansible and Kubernetes

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • [email protected]

Let's be friends: