The Ortus BlogBox

"Ortus: A rise, beginning, coming into being, born, the origin!"

 

Portainer Docker Support for CommandBox and ContentBox

Luis Majano
May 23, 2017

 

We are very excited that the Portainer.io crew has added support for CommandBox and CommandBox docker image deployment. If you have not heard of Portainer, then let's start there first.

What is Portainer


Portainer is an open-source lightweight management UI for easily managing your docker host or a swarm cluster. It is available as a docker image or a standalone binary for any operating system. I was quite impressed with all the functionality out of the box with portainer, and the ease of use of the interface. It really made, for me, put all the questions I had about docker to rest thanks to finally visualizing them. I also found useful their live demo, which is great as well and got my appettite ready for delving into it.

Starting Portainer

To do a quick start for portainer just use the following commands:

docker run -d -p 9000:9000  \
   -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

This will run the docker container for portainer on port 9000 and it will manage the local Docker engine.

Please note that you can manage any docker endpoint or swarm cluster. Pelase refer to their documentation for further instructions: https://portainer.readthedocs.io/en/stable/deployment.html#quick-start

Application Templates

Portainer has the concept of quick application templates for easily deploying applications and trying them out. From here you can navigate their great collection and you will find our two docker images: CommandBox and ContentBox. We will use them to launch CFML applications with CommandBox or a full fledge CMS instance using ContentBox CMS. Below are the screenshots for each template so you can get started with ColdFusion (CFML) and ContentBox CMS with docker:

CommandBox Template

Using the CommandBox template you can fill out the following information:

  • The name of the container
  • The type of networking
  • Ownership in Portainer (Portainer supports multi-user access and runnable rights)
  • Port Mappings for HTTP and HTTPS
  • Volume Mapping for the running ColdFusion application

You can run the template as is and it will generate the sample ColdFusion page which is not very fancy. So we would encourage you to point it to a ColdFusion application so you can see your application being dockerized!

Please note that once the image spins up you can add more environment variables and further configuration settings by visiting the containers area.

ContentBox CMS Template

Using the ContentBox CMS template you can fill out the following information:

  • The name of the container
  • The type of networking
  • Ownership in Portainer (Portainer supports multi-user access and runnable rights)
  • Port Mappings for HTTP and HTTPS
  • Volume Mappings for the following:
  • The storage of the in-memory database (Express edition is the default in portainer)
  • The media location for assets

You can run the template as is and it will generate a new ContentBox CMS site with its very own in-memory H2 database and clustering capabilities. However, you will need to follow the installer and then remove it via environment variables so it does not recreate the image on each startup. Please refer to our docker image documentation for further information.

Please note that once the image spins up you can add more environment variables and further configuration settings by visiting the containers area.

What's Next!

In coming tutorials we will be demonstrating how to use Portainer to leverage a docker swarm with our images. From service creations, to on-the-fly modifications and much more. So stay tuned!

ColdBox MVC, ColdFusion, CommandBox, ContentBox CMS, Docker, Tutorials 0

A ColdBox Success Story - Brian Sappery- Shop.com

Luis Majano
May 23, 2017

 


Brian Sappery, Applications Architect for shop.com, discusses how they leverage the ColdBox Platform and ColdFusion for delivering a high impact and mission critical RESTFul applications, that powers much of their multi-million dollar infrastructure.

 

 


SHOP.COM Marketplace offers great deals on clothes, beauty, health and nutrition, shoes, electronics, and more from over 1,500 stores with one easy checkout.
ColdBox MVC, ColdFusion, Community, Customers, News 0

A ColdBox Success Story - Chad Haney - PiepelineSuite

Luis Majano
May 19, 2017

 


The CTO for pipelinesuite discusses how they leverage the ColdBox Platform for delivering a high impact Software as a Service built in ColdFusion (CFML).

 


pilelinesuite is a SaaS construction bid management software made fast and easy. Manage subcontractor and project data, bid invitations via email/fax and an online plan room.

 

ColdBox MVC, ColdFusion, Community, Customers, News 0

Using "testbox watch" to Automate Your Testing Suite

Brad Wood
May 19, 2017

 

There is a new command in town in the CommandBox 3.7 snapshot build.  If you want to get the current snapshot build of CommandBox 3.7 to try this out, and play with it, simply run the following command and it will direct you to the latest bleeding edge download page:

CommandBox> upgrade --latest

What does it do?

This command is called testbox watch and it is similar to testbox run which can be used to run your projects unit or integration tests.  The difference is that testbox run will run your tests a single time right then, whereas the testbox watch command will stay running until you stop it with Ctrl+C.  The command will watch the files in your project for changes, and every time you save a CFC file, it will run your tests immediately, outputting the results to the console window.  This gives you instant feedback as you develop as to whether you just broke something.

CommandBox> testbox watch

Watching Files...

Executing tests via http://127.0.0.1:59060/tests/runner.cfm?&recurse=true&reporter=json, please wait...
TestBox v2.5.0-snapshot
---------------------------------------------------------------------------------
| Passed  | Failed  | Errored | Skipped | Time    | Bundles | Suites  | Specs   |
---------------------------------------------------------------------------------
| 16      | 0       | 0       | 0       | 132 ms  | 2       | 4       | 16      |
---------------------------------------------------------------------------------

Stopping...

CommandBox>

 

If you want to see a demo of this in action, check out this screencast I made.  

 

Configuring Your Watcher

As usual, you can get help on any CommandBox command by adding the word "help" to the end of it.
CommandBox> testbox watch help

You will see that there are a handful of way to configure how it runs.  The watcher itself can be controlled by setting up the parameters you want in your box.json file for the project.  Here's a rundown of the configuration elements you can set.  All of these are optional except the testbox.runner.

Where are your tests located?

CommandBox> package set testbox.runner=http://localhost:8080/tests/runner.cfm

Do you want verbose test output, or compact?

CommandBox> package set testbox.verbose=false

Only runs tests with these labels

CommandBox> package set testbox.labels=foo

Choose the test suites to execute

CommandBox> package set testbox.testSuites=bar

Control how often the watcher checks the file system for changes.

CommandBox> package set testbox.watchDelay=1000

Customize exactly what files to watch for changes with a list of globbing patterns

CommandBox> package set testbox.watchPaths=/models/**.cfc

Your box.json file

So your box.json file may look something like this once you've set it up.

{
    "testbox":{
       "runner":"http://localhost:8080/tests/runner.cfm",
       "labels":"foo",
       "bundles":"test.specs",
       "testSuites":"bar",
       "verbose":"false",
       "watchDelay":"1000",
       "watchPaths":"/models/**.cfc"
   }
}

 

 
CommandBox, TestBox, Tutorials 0

DC CF.Objective() 2017 CommandBox Training Discounts

Luis Majano
May 19, 2017

 


If you will be attending this year's CF.Objective (Which you should!) on July, then you can attend our ColdFusion CommandBox training (July 18-19) and get a whooping 25%! You can use the discount code cfobjective and be on your way to learn how to evolve your legacy ColdFusion applications by using modern tooling like CommandBox!

You can also follow this link: https://dc2017-commandbox.eventbrite.com?discount=cfobjective to purchase your registration.

Course Information

In this training we will review the ins and outs of CommandBox so you can incorporate it as your ColdFusion companion tool. From CLI and operating system integration to ColdFusion engine management and portability with Docker and container strategies. This training series will be led by CommandBox creators Brad Wood and Luis Majano. Whether you are a ColdFusion expert or novice, this bootcamp will challenge you and refresh your skills to be able to modernize your ColdFusion (CFML) applications and servers.

ColdFusion, CommandBox, Community, Conferences, Training 0

TestBox v2.5.0 Released!

Luis Majano
May 18, 2017

 

We are excited to announce the release of TestBox version 2.5.0. To install just do:

box install testbox --savedev

To upgrade your current testbox installation just run the following:

box uninstall testbox && install testbox --savedev

TestBox 2.5.0 is a minor release with some great new functionality and tons of fixes. You can find the release notes here and the major updates for this release. One of the biggest features for TestBox that was not part of TestBox, was the addition of TestBox Watchers to CommandBox.

ColdBox MVC, ColdFusion, Community, News, Releases, TestBox 0

Washington DC cf.Objective() 2017 CommandBox Training

Luis Majano
May 15, 2017

 

 

We are so excited to bring our Training Bootcamp series back to the Washington, D.C./Virginia area this July 18-19th 2017 just before CF.Objective.

 

Do you want to transform your procedural/legacy CFML to modern times? Then this training is for you!

Events, Training 0

ColdBox Framework Reinit Strategies

Brad Wood
May 11, 2017

 

Everybody updates their code.  Some more than others, and many during business hours.  This leads to the inevitable conundrum of needing to reinit your ColdBox application to pick up said changes. If ColdBox is reinitted while a server is under load, some users may get errors, so it's a very common to get questions about how to handle that. 

ColdBox MVC, ColdFusion, Tutorials 0

Evolve your legacy ColdFusion to CommandBox Microservices - ITB2017 Day 2

Luis Majano
May 09, 2017

 


Day 2 for the Into The Box conference started with our second keynote focusing on how to evolve legacy ColdFusion (CFML) applications/dinosaurs into modern ColdFusion applications. We discussed all the modern tools created by Ortus in order to facilliate developers to not only evolve your applications but also be able to containerize them into microservices. We then focused on best practices to decompose these wild and unpredictable animals into modular architecture components and even RESTFul services uses common patterns like the strangler application pattern. Our very own Jon Clausen went into depth of all the tools to tame these animals including of course ColdBox MVC as the base for modular development and behavior driven development for increasing code quality and capturing requirement states.

This is the age of the containers, so it is imperative to evolve your applications and apply modern techniques not only for development but also for distribution and portability. We are at the age where you can run ANY ColdFusion CFML application with a single CLI command using our docker containers:

docker run -v "/path/to/your/app:/app" ortussolutions/commandbox

Let's remember our day 1 keynote quote:


In this day and age, every company and let me repeat that, every company is a software company and thus must be agile, present and modern. The tooling is here, use it.

It is imperative to be able to deploy and deploy fast in this day and age. Let's investigate some motivating questions:

  • How long does it take you to go to production?
  • Is it a manual process or an automated process?
  • Do you have zero downtime or do you cross your fingers when you deploy?
  • Do you have a no deploys on Fridays rule?
  • What do you do if your deploy fails?
  • How do you rollback your deploys?

Hopefully this video will inspire you to do more with your legacy animals and hopefully strangle them into submission:

  • Transform - Create parallel CFML applications based on modular ColdBox architectures, RESTFul principles and microservices
  • Coexist - Leave the existing animal alone for a time. Redirect from the existing site to the new infrastructures
  • Eliminate - Remove the old functionalities from the existing procedural apps and re-direct traffic to the new implementations.
  • Rinse and Repeat - Repeat the process until you can finally eliminate the procedural/legacy dinosaur

Enjoy the video recording and remember: ColdFusion (CFML) and its tooling is as modern as any language. It is up to you to implement, share and communicate. Evolve or Die!


Keynote Video

Keynote Slides

ColdFusion, Community, Into The Box 0

Into The Box 2017 Keynote Day 1 Recap & Recording

Luis Majano
May 02, 2017

 


The Into The Box conference has now passed and we had a tremendous time sharing with fellow developers in Houston last week. It was our very first standalone conference and it was a success in every which way. We are very excited about all the incredible speakers, attendees and topics we were able to learn from.

In this blog post, you will be able to revive a little of the ambiance and the culture of modern ColdFusion through our Day 1 Keynote. Our focus was to bring attention to the procedural and legacy stigma that has plagued the ColdFusion community for many years. We tackled head on the major problems the ColdFusion community has been dealing with for the past 10 years: legacy, not modern, procedural, no tools, no OS integrations, no jobs, no learning, etc. We demistifyed all these legacy and non-modern concerns and issued a warning to corporations that are still in procedural/legacy hell; Evolve or die!


In this day and age, every company and let me repeat that, every company is a software company and thus must be agile, present and modern. The tooling is here, use it.

We also presented our initiatives to spark modernization and tooling for the ColdFusion community since our first CommandBox release in 2014. We then moved to present our roadmaps for every box product, our containerization strategies, CommandBox and ContentBox docker images and how to evolve legacy/procedural applications.


Let me remind you, that you can run ANY Adobe ColdFusion or Lucee Engine in Docker today!

We ended with a view of the new products and initiatives coming to Ortus from:

  • Ortus University
  • Cross-CFML Engine portability and abstractions
  • CBT = ColdBox Templating Language based on Twig
  • CommandBox Minions and load balancing
  • CommandBox Orchestration and JVM containers
  • Project GRU->C for CommandBox remote orchestration and command executions
  • Much more..

Enjoy the video recording and remember: ColdFusion (CFML) and its tooling is as modern as any language. It is up to you to implement, share and communicate. Evolve or Die!


Keynote Video

Keynote Slides

ColdFusion, Community, Into The Box 0
1 2 3 4 5 6 ... 112 >>