Deploy a Foal TS app
Foal TS is a Node framework written in TypeScript that keeps their framework simple, intuitive, and easy to get started with.
Prerequisite
Install Foal on server
When building your app in production, depending on how you have your build script setup in package.json
, you may need to install Foal's CLI on your
server. If so, SSH into your server and run the following:
npm install -g @foal/cli
Ensure port is being read from server environment
Make sure to update your code to check process.env.PORT
for the port number as Cleavr will randomly assign a port number during site creation.
In your Foal TS project, open the index.ts
file and update as follows:
const port = Config.get("port", "number", 3001);
httpServer.listen(process.env.PORT || port, () => {
console.log(`Listening on port ${port}...`);
});
Step 1: Add A NodeJS SSR Site
On an existing server, click Add Site to add a new site to your server.
Select the NodeJS SSR option and enter the remainder site details and click Add to create the new site on your server.
Cleavr will automatically install NodeJS on your server if NodeJS has not already been installed.
Step 2: Add A Database
You'll likely need a MySQL 5.7 or PostgreSQL database for your app. On your server, install your preferred database type and add a database and database user. You can add the configurations for your database in a myriad of ways; Foal will look for .env files for the database config settings. If this is how you are adding your database connections configs, be sure to also add them in the Deployment Workflow Environment section when you configure your deployment workflow.
Step 3: Add A Deployment Workflow
After the site has successfully installed, you'll now need to create a deployment workflow and deploy out your application.
In the deployment workflow section, you'll notice that a new deployment workflow was automatically created after the NodeJS site was added. This is a basic deployment workflow shell that you can use to complete the setup of your deployment workflow. Click on Complete Setup on the deployment workflow.
Configure the VC Provider, Repository, and Branch To Deploy fields on the Settings > Code Repository tab and then click Update.
Next, on the NPM Build tab, add the following:
- Entry Point: build/index.js
- Build Command: npm run build --production Click Update.
You may need to update the entry point, arguments, build command, and/or artifact path fields based on your package.json file settings. The above works for the standard defaults.
If using .env to provide database connection variables, add them to the Environment section.
In Deployment Hooks, create a new deployment hook:
Run Migration
cd {{ releasePath }}
npm run migrations
Place the run migration deployment hook after the build hook.
Step 4: Deploy!
If everything looks good, go to the deployments section and deploy! 🚀