Runs one or more Instances of this Image in the specified environment (on your machine or on AWS).
All necessary resources (Elastic IPs, ELBs, Security Groups, Auto-Scaling Groups, Databases, ...) will be provisioned automatically if they don't already exist. Already running applications will be updated with zero-downtime blue/green deployments.
Usage: mvn boxfuse:run -Dboxfuse.image=image -Dboxfuse.env=environment
> mvn boxfuse:run -Dboxfuse.image=hello:1.0 Launching Instance of axelfontaine/hello:1.0 on VirtualBox ... Forwarding http port localhost:8888 -> vb-ec717c5e:80 Instance launched in 00:04.006s -> vb-ec717c5e Waiting for Payload to start on Instance vb-ec717c5e ... Payload started in 00:08.786s -> https://127.0.0.1:8888
Note: When an image isn't specified, CloudCaptain will automatically search for a compatible payload to fuse within the current directory. If the command is executed at the root of a Maven project, CloudCaptain will also automatically look for the project's build artifact.
Plugin Parameter | Maven/System property | Default | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
user | boxfuse.user | Required - Your CloudCaptain Client user. Also configurable via the BOXFUSE_USER
environment variable or the Maven settings.xml
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
secret | boxfuse.secret | Required - Your CloudCaptain Client secret. Also configurable via the
BOXFUSE_SECRET
environment variable or the Maven settings.xml
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
serverid | boxfuse.serverid | boxfuse | The id of the server in the Maven settings.xml file to
load the credentials from. This is an alternative to passing the credentials in directly through properties. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
capacity | boxfuse.capacity |
AWS only The capacity to scale an app to in a certain environmentValid formats:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cmd | boxfuse.cmd | first executable file in image | Generic Linux x64 apps only When fusing new images only The command to start the app including relative path and all necessary arguments |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpus | boxfuse.cpus | same as host | VirtualBox only The number of CPUs to assign to an Instance |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
debug | boxfuse.debug | false | Start the Payload in debug mode when an Instance launches | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
debug.wait | boxfuse.debug.wait | false | JVM apps only Whether the JVM should wait for the remote debugger to connect (Only applicable when debug mode is active) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
domain | boxfuse.domain | auto | AWS only The custom domain to use for this application in the specified environment.auto to let CloudCaptain
automatically create a new boxfuse.io subdomain for you.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elasticip | boxfuse.elasticip | auto |
auto to let CloudCaptain automatically create a new Elastic IP for you. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
elb | boxfuse.elb | auto |
auto to let CloudCaptain automatically create a new ELB for you. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
env | boxfuse.env | dev | Use the AWS test or prod environments instead of
the local dev one
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
envvars | boxfuse.envvars.NAME | Passes this environment variable into the Instance Example: boxfuse.envvars.JDBC_URL=jdbc:mydburl |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
healthcheck | boxfuse.healthcheck | true |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
healthcheck.port | boxfuse.healthcheck.port | autodetected | The name of the port to check whether the payload started correctly (must be an https or http port, not tcp or udp). Example: admin-https |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
healthcheck.path | boxfuse.healthcheck.path | / | The path to check whether to payload started correctly | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
healthcheck.timeout | boxfuse.healthcheck.timeout | 300 | The number of seconds to wait for the Payload to come up | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
image | boxfuse.image | autodetected | Run this specific image. When run as part of fusing a new image, this overrides the app name and version to assign to a new image. By default this is autodetected based on the payload name.
For example |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
none | AWS only The ARN of the AWS instance profile to use in the specified environment. This is only for apps using the AWS API. The valuenone unsets any instance profile.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jvm.args | boxfuse.jvm.args | JVM apps only Extra arguments to pass to the JVM |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jvm.jmx | boxfuse.jvm.jmx | false | JVM apps only Enable the JMX remote management and profiling interface for the JVM |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jvm.main.class | boxfuse.jvm.main.class | autodetected | JVM apps only Main class to invoke on JVM startup |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
jvm.main.args | boxfuse.jvm.main.args | JVM apps only Arguments to pass to the main class |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
linux.args | boxfuse.linux.args | quiet | When fusing new images only Experts only The arguments to pass from the bootloader to the Linux kernel |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
live | boxfuse.live | false | When fusing new images only Enable live reloading of changes in dev for super fast round-trips. Note that images with live reloading cannot be pushed to the CloudCaptain Vault. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logs.auto | boxfuse.logs.auto | true | Whether to automatically display the instance logs on startup | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logs.boot | boxfuse.logs.boot | true | Shows the instance boot logs | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logs.dir | boxfuse.logs.dir | target/boxfuse | The directory where the logs should be redirected to | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logs.filter | boxfuse.logs.filter.FILTER | CloudWatch Logs apps only The filter to apply when viewing the application logs. Supported filters:
Wildcards: Wilcard matching is supported by prepending and/or appending an asterisk
(
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logs.layout | boxfuse.logs.layout | timestamp app? image? instance? event? 40:logger? 10:thread? account? action? user? session? request? message? |
CloudWatch Logs apps only The layout to use when displaying the logs. Format:
Example:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
logs.tail | boxfuse.logs.tail | false | Tail (keep running with live updates) the logs | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
newrelic.licensekey | boxfuse.newrelic.licensekey | When fusing new images only Installs and configures the New Relic agents to monitor your instance. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
payload | boxfuse.payload | build artifact | When fusing new images only The payload to use when fusing an image. This is useful when running the CloudCaptain Maven plugin from the command-line or when multiple artifacts are produced and you want to use an artifact which is not the main one (an artifact using a classifier for example). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
platform | boxfuse.platform | auto |
The hypervisor platform to use for the local dev environment. Choices:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ports | boxfuse.ports.NAME | http=80 | Exposes the port of the app with this name using this definition. Example: boxfuse.ports.jmx=8001 Supported formats:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
portsmap | boxfuse.portsmap.NAME | same as matching image port | VirtualBox only The local ports to map to the app inside the instance. By default CloudCaptain will attempt to open the same
port
locally as has been opened in the VirtualBox VM. On Linux & Mac privileged ports (<1024) will be
opened at 10000
+ the port number for non-root users. Example:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ram | boxfuse.ram | 1024 | VirtualBox only The amount of RAM in MB to assign to an Instance |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
securitygroup | boxfuse.securitygroup | auto | AWS only The id of the AWS security group to use in the specified environment.auto will auto-create a
new security group based on the configured ports.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
subnets | boxfuse.subnets | auto | AWS only The AWS subnets to deploy to in the specified environment. AWS supports maximum one subnet per availability zone.auto to let AWS automatically select the subnet(s).
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tags | boxfuse.tags.key | AWS only The custom tags to apply to AWS resources in addition to the default CloudCaptain ones. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
targetgroup | boxfuse.targetgroup | auto |
auto to let CloudCaptain automatically create a new ALB and Target Group for you. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
tmp | boxfuse.tmp | 1 | The amount of temp space to allocate to /tmp in GB | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
windows.user | boxfuse.windows.user | current user | Hyper-V live images only The Windows user of your machine. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
windows.password | boxfuse.windows.password | Hyper-V live images only The Windows password of your machine. |
<configuration> <user>1234567890abcdef1234567890abcdef12345678</user> <secret>ABCDEFGHIJKL1234567abcdefghijklmnopqrstu</secret> <capacity>3:t2.large</capacity> <cmd>-cmd=bin/myapp -with -my args</cmd> <cpus>2</cpus> <debug>true</debug> <debug.wait>false</debug.wait> <domain>myapp.mydomain.com</domain> <elasticip>1.2.3.4</elasticip> <elb>my-elb</elb> <env>prod</env> <envvars> <JDBC_URL>jdbc:mydburl</JDBC_URL> <MY_OTHER_VAR>abc</MY_OTHER_VAR> </envvars> <healthcheck>true</healthcheck> <healthcheck.port>https</healthcheck.port> <healthcheck.path>/health</healthcheck.path> <healthcheck.timeout>120</healthcheck.timeout> <instanceprofile>none</instanceprofile> <jvm.args>-DmycustomProp=abc</jvm.args> <jvm.jmx>true</jvm.jmx> <jvm.main.class>com.mycorp.MyApp</jvm.main.class> <jvm.main.args>-abc -def</jvm.main.args> <image>hello:1.0</image> <linux.args>quiet</linux.args> <live>true</live> <logs.auto>true</logs.auto> <logs.boot>true</logs.boot> <logs.dir>${project.outputDirectory}/logs</logs.dir> <logs.filter> <level>WARN</level> <account>MyAccount123</account> </logs.filter> <logs.layout>timestamp app? image? instance? event? 40:logger? account? session? request? message?</logs.layout> <logs.tail>true</logs.tail> <newrelic.licensekey>0123456789abcdef0123456789abcdef012345</newrelic.licensekey> <payload>my-app-1.2.jar</payload> <platform>virtualbox</platform> <ports> <https>443</https> <http>80</http> </ports> <portsmap> <https>8443</https> <http>8080</http> </portsmap> <ram>512</ram> <securitygroup>sg-12345678</securitygroup> <subnets> <subnet>subnet-abcd1234</subnet> <subnet>subnet-efgh5678</subnet> </subnets> <tags> <my-tag>My Value</my-tag> <my-other-tag>myothervalue</my-other-tag> </tags> <targetgroup>my-targetgroup</targetgroup> <tmp>16</tmp> <windows.user>myuser</windows.user> <windows.password>mypassword</windows.password> </configuration>
After you execute run, CloudCaptain will automatically define the following Maven properties
Maven property | Description |
---|---|
boxfuse.image | The image that was used to launch the instances |
boxfuse.instances | Comma-separated list of ids of the instances just launched |
boxfuse.instances.0.id | Id of the instance just launched |
boxfuse.instances.0.url | Url of the instance just launched. Very useful for automated testing. |