SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
CF apps...dev to production...
CommandBox,CFConfig,Docker
Now with 200% more productivity
Servers as pets/cattle
Deploying your site anywhere should be:
● Automated
● Repeatable
● Easy
Three pillars of your servers are:
● CF Engine/version
● CF Config (mappings/datasources)
● Your code (CFML)
You shouldn’t need to:
● Download anything
● Run an installer
● Log into a Web UI to enter settings
● Run updaters to get the latest version
● Wonder if this server/PC is the same as all the others
● Take days or weeks to provision a new server
CF Engine/version
CommandBox Servers and server.json
Start your servers!
● Choose your engine (Adobe,Lucee,custom)
● Choose your version
● Automatically get updates
server start
server start cfengine=adobe@11
server restart
Server.json
● Heap size
● JVM args
● Java version
● Ports/HTTP(S)/AJP
● Virtual directories
● Much,much,more...
● Commit to repo to share with team
IIS Connector (Boncode)
● http://www.boncode.net/boncode-connector
● https://www.youtube.com/watch?v=8q7sSZ7gK3E
Windows Service (NNSM)
● NSSM -the Non-Sucking Service Manager
● https://nssm.cc/
● https://www.youtube.com/watch?v=-VyjpqlUi-U
CF Config
Configs all the CF things
Manages everything in the CF administrator
● Datasources
● Caches
● CF Mappings
● Debugging/security settings
● Lockdown
● Scheduled tasks
● Mail server(s)
CLI Interface
● Scriptable
● Automatable
● Tab completion!
cfconfig show
cfconfig set
cfconfig export
cfconfig import
cfconfig transfer
cfconfig diff
JSON storage
● Makes all these settings portable
● Generic across CF engines
● Can have more than one json file if needed
● Auto-import on server start
● Commit to repo to share with team
Your code
CFML of course!
Keep your code self-contained
● Environment detection
○ Dev,stage,prod,etc
● Externalize settings
○ Env vars
● Use CF Mappings for portability
○ /root
● Use source control (duh!)
Use box.json for dependencies
● Define 3rd party frameworks/libraries
● Describes dependencies of your app not in source control
● Can dial in exact versions or version ranges with semver
● Pull in with“box install”to“build out”code
● For a production build,use“install --production”
Environment Variables
Java System props work too
Environment variables
● Used to externalize settings that are different per
server/tier
● Used to secure sensitive settings like passwords
● The standard in cloud deployments
● Can also be Java System properties
Environment variables
● Can be used in CommandBox CLI and JSON files via
${ENV_NAME:default}
○ server.json
○ .cfconfig.json
○ box.json
● Built into Lucee’s“server”scope
● Built into ColdBox 5 configs
● Easily access via CFMLvia Java
● CommandBox dotenv module to load from.env file
○ https://www.forgebox.io/view/commandbox-dotenv
○ install commandbox-dotenv
● Looks for a.ENV file and loads it
● Don’t commit this file to source control
● Nice for local devs to have custom settings
Environment variables
Destination: Happy Place
Wrap up an entire website server, config,
and code in your source repo with the code
and a few JSON files
● Built-in FusionReactor support
○ https://www.forgebox.io/view/commandbox-fusionreactor
○ install commandbox-fusionreactor
● Allows you easily configure
○ Licensing
○ Cloud setting
○ FR web admin password
FusionReactor Module
● Adds“fake”domains to your host file for you
○ https://www.forgebox.io/view/commandbox-hostupdater
○ install commandbox-hostupdater
● Allows you easily configure
○ Requires elevated privileges on some OSes
○ Auto-removes on“server forget”
○ Uses unique local IP for each server so ports can be re-used
Host Updater Module
Any dev can spin up a complete server in seconds with three commands:
$> git clone
$> box install
$> box server start
New Employee Onboarding Process
Docker
All aboard the party boat...
● Servers as cattle
● The ultimate in encapsulated server deploys
● Super lightweight
● Super fast to deploy
Docker
● On Docker Hub
● https://hub.docker.com/r/ortussolutions/commandbox/
● All previous CommandBox/CFConfig features apply to Docker
● Server.json gets picked up
● CFConfig gets bundled
● Install dependencies from box.json
● Do a warmup step in your build so everything is ready to go
Ortus CommandBox-based Docker Image
docker run -p 8080:8080 
-p 8443:8443 
-v "/path/to/your/app:/app" 
ortussolutions/commandbox
Ortus CommandBox-based Docker Image
● Tons of env vars available
○ PORT / SSL_PORT
○ cfconfigfile
○ cfconfig_[engine setting]
○ HEADLESS
○ BOX_INSTALL
○ URL_REWRITES
● Support for Docker Secrets
Ortus CommandBox-based Docker Image

Weitere ähnliche Inhalte

Was ist angesagt?

AUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptx
AUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptxAUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptx
AUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptx
NadiirMahamoud
 

Was ist angesagt? (20)

Alcohol
AlcoholAlcohol
Alcohol
 
Identify and Describe The Management of Drug Interactions
Identify and Describe The Management of Drug InteractionsIdentify and Describe The Management of Drug Interactions
Identify and Describe The Management of Drug Interactions
 
AUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptx
AUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptxAUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptx
AUTONOMIC NERVOUS SYSTEM DR. JAMA copy.pptx
 
Say no to Addiction- Drugs and Types
Say no to Addiction- Drugs and TypesSay no to Addiction- Drugs and Types
Say no to Addiction- Drugs and Types
 
Drugs PPT - sociology - shubham parsekar
Drugs PPT - sociology - shubham parsekarDrugs PPT - sociology - shubham parsekar
Drugs PPT - sociology - shubham parsekar
 
Opiates & Opioids
Opiates & Opioids  Opiates & Opioids
Opiates & Opioids
 
An Overview of Antipsychotic Drugs
An Overview of Antipsychotic DrugsAn Overview of Antipsychotic Drugs
An Overview of Antipsychotic Drugs
 
Chapter 1 Drugs and Society
Chapter 1 Drugs and SocietyChapter 1 Drugs and Society
Chapter 1 Drugs and Society
 
Chapter 5 How and Why Drugs Work
Chapter 5 How and Why Drugs WorkChapter 5 How and Why Drugs Work
Chapter 5 How and Why Drugs Work
 
Ans (parasympathetic)
Ans (parasympathetic)Ans (parasympathetic)
Ans (parasympathetic)
 
Dmt
DmtDmt
Dmt
 
Drugs & Society Chapters 7 & 8
Drugs & Society Chapters 7 & 8Drugs & Society Chapters 7 & 8
Drugs & Society Chapters 7 & 8
 
Amphetamine toxicity slideshare
Amphetamine toxicity slideshareAmphetamine toxicity slideshare
Amphetamine toxicity slideshare
 
Addiction
AddictionAddiction
Addiction
 
E C S T A S Y
E C S T A S YE C S T A S Y
E C S T A S Y
 
Drug addiction
Drug addictionDrug addiction
Drug addiction
 
Introduction to ans, cholinergics system
Introduction to ans, cholinergics systemIntroduction to ans, cholinergics system
Introduction to ans, cholinergics system
 
Drugs & Society Chapter 2
Drugs & Society Chapter 2Drugs & Society Chapter 2
Drugs & Society Chapter 2
 
An "Internet Pornography Addict" Walks Into A Clinic...
An "Internet Pornography Addict" Walks Into A Clinic...An "Internet Pornography Addict" Walks Into A Clinic...
An "Internet Pornography Addict" Walks Into A Clinic...
 
Drug abuse
Drug abuse Drug abuse
Drug abuse
 

Ähnlich wie ITB2019 Scaling with CommandBox in Production! - Brad Wood

Itb2018 cf apps to dev to production with command box cf-config docker
Itb2018   cf apps to dev to production with command box cf-config dockerItb2018   cf apps to dev to production with command box cf-config docker
Itb2018 cf apps to dev to production with command box cf-config docker
Ortus Solutions, Corp
 
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionSetting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Gavin Pickin
 
Infrastructure as code with Terraform
Infrastructure as code with TerraformInfrastructure as code with Terraform
Infrastructure as code with Terraform
Sam Bashton
 
A3Sec Advanced Deployment System
A3Sec Advanced Deployment SystemA3Sec Advanced Deployment System
A3Sec Advanced Deployment System
a3sec
 
CodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest 2013. Mosesohn M. — Automating environments with CobblerCodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest
 

Ähnlich wie ITB2019 Scaling with CommandBox in Production! - Brad Wood (20)

Itb2018 cf apps to dev to production with command box cf-config docker
Itb2018   cf apps to dev to production with command box cf-config dockerItb2018   cf apps to dev to production with command box cf-config docker
Itb2018 cf apps to dev to production with command box cf-config docker
 
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
Brad wood - 5 CommandBox Modules You Should Be Using [Into The Box 2020]
 
Brad Wood 5 command box modules you should be using
Brad Wood   5 command box modules you should be usingBrad Wood   5 command box modules you should be using
Brad Wood 5 command box modules you should be using
 
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
 
Infrastructure = Code
Infrastructure = CodeInfrastructure = Code
Infrastructure = Code
 
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusionSetting up your Multi Engine Environment - Apache Railo and ColdFusion
Setting up your Multi Engine Environment - Apache Railo and ColdFusion
 
Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment Take Home Your Very Own Free Vagrant CFML Dev Environment
Take Home Your Very Own Free Vagrant CFML Dev Environment
 
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
Take home your very own free Vagrant CFML Dev Environment - Presented at dev....
 
Infrastructure as code with Terraform
Infrastructure as code with TerraformInfrastructure as code with Terraform
Infrastructure as code with Terraform
 
Dockerized maven
Dockerized mavenDockerized maven
Dockerized maven
 
A3Sec Advanced Deployment System
A3Sec Advanced Deployment SystemA3Sec Advanced Deployment System
A3Sec Advanced Deployment System
 
CodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest 2013. Mosesohn M. — Automating environments with CobblerCodeFest 2013. Mosesohn M. — Automating environments with Cobbler
CodeFest 2013. Mosesohn M. — Automating environments with Cobbler
 
Magento Docker Setup.pdf
Magento Docker Setup.pdfMagento Docker Setup.pdf
Magento Docker Setup.pdf
 
ContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven InfrastructureContainerCon - Test Driven Infrastructure
ContainerCon - Test Driven Infrastructure
 
Automating with ansible (Part B)
Automating with ansible (Part B)Automating with ansible (Part B)
Automating with ansible (Part B)
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
 
Run automated tests in Docker
Run automated tests in DockerRun automated tests in Docker
Run automated tests in Docker
 
Local development environment evolution
Local development environment evolutionLocal development environment evolution
Local development environment evolution
 
Making Spinnaker Go @ Stitch Fix
Making Spinnaker Go @ Stitch FixMaking Spinnaker Go @ Stitch Fix
Making Spinnaker Go @ Stitch Fix
 
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
Nagios Conference 2014 - Spenser Reinhardt - Detecting Security Breaches With...
 

Mehr von Ortus Solutions, Corp

Mehr von Ortus Solutions, Corp (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Ortus Government.pdf
Ortus Government.pdfOrtus Government.pdf
Ortus Government.pdf
 
Luis Majano The Battlefield ORM
Luis Majano The Battlefield ORMLuis Majano The Battlefield ORM
Luis Majano The Battlefield ORM
 
Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI Brad Wood - CommandBox CLI
Brad Wood - CommandBox CLI
 
Secure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusionSecure your Secrets and Settings in ColdFusion
Secure your Secrets and Settings in ColdFusion
 
Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023Daniel Garcia ContentBox: CFSummit 2023
Daniel Garcia ContentBox: CFSummit 2023
 
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdfITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
ITB_2023_Human-Friendly_Scheduled_Tasks_Giancarlo_Gomez.pdf
 
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdfITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
ITB_2023_CommandBox_Multi-Server_-_Brad_Wood.pdf
 
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdfITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
ITB_2023_The_Many_Layers_of_OAuth_Keith_Casey_.pdf
 
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdfITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
ITB_2023_Relationships_are_Hard_Data_modeling_with_NoSQL_Curt_Gratz.pdf
 
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdfITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
ITB_2023_Extend_your_contentbox_apps_with_custom_modules_Javier_Quintero.pdf
 
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdfITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
ITB_2023_25_Most_Dangerous_Software_Weaknesses_Pete_Freitag.pdf
 
ITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdfITB_2023_CBWire_v3_Grant_Copley.pdf
ITB_2023_CBWire_v3_Grant_Copley.pdf
 
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdfITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
ITB_2023_Practical_AI_with_OpenAI_-_Grant_Copley_.pdf
 
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdfITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
ITB_2023_When_Your_Applications_Work_As_a_Team_Nathaniel_Francis.pdf
 
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdfITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
ITB_2023_Faster_Apps_That_Wont_Get_Crushed_Brian_Klaas.pdf
 
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdfITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
ITB_2023_Chatgpt_Box_Scott_Steinbeck.pdf
 
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdfITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
ITB_2023_CommandBox_Task_Runners_Brad_Wood.pdf
 
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdfITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
ITB_2023_Create_as_many_web_sites_or_web_apps_as_you_want_George_Murphy.pdf
 
ITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdfITB2023 Developing for Performance - Denard Springle.pdf
ITB2023 Developing for Performance - Denard Springle.pdf
 

Kürzlich hochgeladen

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 

ITB2019 Scaling with CommandBox in Production! - Brad Wood

  • 1. CF apps...dev to production... CommandBox,CFConfig,Docker Now with 200% more productivity
  • 3. Deploying your site anywhere should be: ● Automated ● Repeatable ● Easy
  • 4. Three pillars of your servers are: ● CF Engine/version ● CF Config (mappings/datasources) ● Your code (CFML)
  • 5. You shouldn’t need to: ● Download anything ● Run an installer ● Log into a Web UI to enter settings ● Run updaters to get the latest version ● Wonder if this server/PC is the same as all the others ● Take days or weeks to provision a new server
  • 7. Start your servers! ● Choose your engine (Adobe,Lucee,custom) ● Choose your version ● Automatically get updates server start server start cfengine=adobe@11 server restart
  • 8. Server.json ● Heap size ● JVM args ● Java version ● Ports/HTTP(S)/AJP ● Virtual directories ● Much,much,more... ● Commit to repo to share with team
  • 9. IIS Connector (Boncode) ● http://www.boncode.net/boncode-connector ● https://www.youtube.com/watch?v=8q7sSZ7gK3E
  • 10. Windows Service (NNSM) ● NSSM -the Non-Sucking Service Manager ● https://nssm.cc/ ● https://www.youtube.com/watch?v=-VyjpqlUi-U
  • 11. CF Config Configs all the CF things
  • 12. Manages everything in the CF administrator ● Datasources ● Caches ● CF Mappings ● Debugging/security settings ● Lockdown ● Scheduled tasks ● Mail server(s)
  • 13. CLI Interface ● Scriptable ● Automatable ● Tab completion! cfconfig show cfconfig set cfconfig export cfconfig import cfconfig transfer cfconfig diff
  • 14. JSON storage ● Makes all these settings portable ● Generic across CF engines ● Can have more than one json file if needed ● Auto-import on server start ● Commit to repo to share with team
  • 15. Your code CFML of course!
  • 16. Keep your code self-contained ● Environment detection ○ Dev,stage,prod,etc ● Externalize settings ○ Env vars ● Use CF Mappings for portability ○ /root ● Use source control (duh!)
  • 17. Use box.json for dependencies ● Define 3rd party frameworks/libraries ● Describes dependencies of your app not in source control ● Can dial in exact versions or version ranges with semver ● Pull in with“box install”to“build out”code ● For a production build,use“install --production”
  • 19. Environment variables ● Used to externalize settings that are different per server/tier ● Used to secure sensitive settings like passwords ● The standard in cloud deployments ● Can also be Java System properties
  • 20. Environment variables ● Can be used in CommandBox CLI and JSON files via ${ENV_NAME:default} ○ server.json ○ .cfconfig.json ○ box.json ● Built into Lucee’s“server”scope ● Built into ColdBox 5 configs ● Easily access via CFMLvia Java
  • 21. ● CommandBox dotenv module to load from.env file ○ https://www.forgebox.io/view/commandbox-dotenv ○ install commandbox-dotenv ● Looks for a.ENV file and loads it ● Don’t commit this file to source control ● Nice for local devs to have custom settings Environment variables
  • 22. Destination: Happy Place Wrap up an entire website server, config, and code in your source repo with the code and a few JSON files
  • 23. ● Built-in FusionReactor support ○ https://www.forgebox.io/view/commandbox-fusionreactor ○ install commandbox-fusionreactor ● Allows you easily configure ○ Licensing ○ Cloud setting ○ FR web admin password FusionReactor Module
  • 24. ● Adds“fake”domains to your host file for you ○ https://www.forgebox.io/view/commandbox-hostupdater ○ install commandbox-hostupdater ● Allows you easily configure ○ Requires elevated privileges on some OSes ○ Auto-removes on“server forget” ○ Uses unique local IP for each server so ports can be re-used Host Updater Module
  • 25. Any dev can spin up a complete server in seconds with three commands: $> git clone $> box install $> box server start New Employee Onboarding Process
  • 26. Docker All aboard the party boat...
  • 27. ● Servers as cattle ● The ultimate in encapsulated server deploys ● Super lightweight ● Super fast to deploy Docker
  • 28. ● On Docker Hub ● https://hub.docker.com/r/ortussolutions/commandbox/ ● All previous CommandBox/CFConfig features apply to Docker ● Server.json gets picked up ● CFConfig gets bundled ● Install dependencies from box.json ● Do a warmup step in your build so everything is ready to go Ortus CommandBox-based Docker Image
  • 29. docker run -p 8080:8080 -p 8443:8443 -v "/path/to/your/app:/app" ortussolutions/commandbox Ortus CommandBox-based Docker Image
  • 30. ● Tons of env vars available ○ PORT / SSL_PORT ○ cfconfigfile ○ cfconfig_[engine setting] ○ HEADLESS ○ BOX_INSTALL ○ URL_REWRITES ● Support for Docker Secrets Ortus CommandBox-based Docker Image