CloudCaptain supports Revel apps written in Go and packaged as a Revel tar.gz archive.
If you haven't already, start by following Revel & CloudCaptain tutorial that will get you up and running in 5-10 minutes.
Applications should be packaged as a Revel tar.gz containing a Linux ELF64 binary.
To properly set up cross-compilation in order to create Linux x64 binaries Windows users should invoke:
> set GOOS=linux
And Mac OSX users:
> export GOOS=linux
To further decrease the size of CloudCaptain images, use the newest version of Go.
CloudCaptain will automatically configure your application port based on the information contained in in app.conf
.
The port will be either http
or https
based on the value of http.ssl
. The actual port number is automatically
configured according to the value of the http.port
property.
To expose your app via HTTPS make sure you have a custom domain configured
for the environment where you want to run it. Also make sure that you have obtained
a valid TLS (SSL) certificate and that your app has been created
with app.type
set to load-balanced
and tls.type
set to acm
(AWS Certificate Manager).
To listen to the HTTPS port you can use the following code:
import ( "net/http" ) func handler(w http.ResponseWriter, req *http.Request) { w.Header().Set("Content-Type", "text/plain") w.Write([]byte("This is an example server.\n")) } func main() { http.HandleFunc("/", handler) err := http.ListenAndServeTLS(":443", "/app-config/boxfuse-selfsigned-cert.pem", "/app-config/boxfuse-selfsigned-key.pem", nil) }
This will ensure that all network traffic between the ELB and your instances will be encrypted as well.
CloudCaptain uses the same root certificate bundle as the latest version of Firefox. Additionally CloudCaptain also includes the root certificates for Amazon RDS, so you can connect securely to RDS databases out of the box.
CloudCaptain configures the instance to use /tmp
as the directory to store temporary files and provisions 1
GB of space by default.
To increase this (up to a maximum of 16 TB), simply set
the tmp
configuration setting to the number of GB of temp space you need. To prevent CloudCaptain from
provisioning any temp space set tmp
to 0
.
By default all CloudCaptain instance use the UTC
time zone.
We don't recommend changing this as this greatly simplifies time zone issues in machine to machine communication and cleanly relegates all time zones related aspects to a pure presentation layer concern.
If however you still do want to change this, you can override the default time zone of the instance using the
TZ
environment variable. For example to change the time zone of your instance to America/Los_Angeles
you would do so like this:
> boxfuse fuse -envvars.TZ=America/Los_Angeles
To tune the arguments passed Linux kernel from the bootloader, simply pass them using the
-linux.args
setting when fusing your image.
If you need to tune the Linux kernel running in your instance, simply place a sysctl.conf
file in the conf
directory of your app:
my-revel-app
app
conf
sysctl.conf
log
messages
public
test
You can then for example tune the maximum number of file descriptors by simply including the following in sysctl.conf
:
fs.file-max = 131072
CloudCaptain will then automatically configure the Linux kernel to use these settings.