Deploy a Node.js App
Node.js is a free, open-source, cross-platform Javascript runtime environment that you can deploy on Miget in just a few steps.
Prepare the App
Clone a local version of the Miget's nodejs hello world sample application that you can then deploy to Miget. Run these commands in your local terminal:
$ git clone https://github.com/migetapp/node-js-hello-world.git
$ cd node-js-hello-world
Deploy the App
Info
A demo instance of this app is hosted at node-js.onmiget.com.
Create an App
To prepare Miget to receive your source code, you need to create an app on Miget.
On app.miget.com, click the New button to create a new app.
In the Create new App window, add the App Name.
Note
If you choose a name like example, your app will get an additional "-" and five different characters (e.g., example-1jgiq). This makes sure the name is unique.
Select the region where you want your app to be deployed.
Click Create app. On success, you will be redirected to an app overview screen.
Assign Compute Power
Every app you make needs compute power. You can assign an existing Miget or get a new one.
Click on the Assign Miget button. On the next screen, select your desired Miget and click Assign.
On success, you will be redirected to an app overview screen with a message: Compute power assigned to your app.
Deploy using Git
Get Miget Git Token
Navigate to Resources tab, select your Miget (compute power resource) and click Review
Next, you will see an Information box with a few details about your Plan, Region, etc.
Click Manage git tokens button and grab your token.
Info
- The default username for the HTTPS-based git repo is your Miget name.
- The password is the token.
- If you revoke the default token associated with your Miget name, you won't be able to deploy.
- If you add a new Git token, the token name is the Username for Git, and the token itself is the Password.
Deploy Your App
Add remote repository to your git repo. In our case, navigate to previously cloned repository and add remote.
$ cd node-js-hello-world
$ git remote add miget https://git.<region>.miget.io/<your-miget-name>/<app-name>
<region> with a region code of your Miget, <your-miget-name> with your compute name, and <app-name> with your application name.
For proper command, navigate to Deploy tab, and grab correct command. For example:
Push to Miget Git
❯ git push miget --force
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 16 threads
Compressing objects: 100% (11/11), done.
Writing objects: 100% (15/15), 164.84 KiB | 164.84 MiB/s, done.
Total 15 (delta 0), reused 15 (delta 0), pack-reused 0
remote: ! no entries found in Procfile
-----> Cleaning up...
-----> Building example-1jgiq from cnb stack paketobuildpacks/builder-jammy-full (experimental)...
latest: Pulling from paketobuildpacks/builder-jammy-full
Digest: sha256:58aba0d33a107a2c478281a814f52a16ecb132dc9d28be48a5515d516c9ba2c3
Status: Image is up to date for paketobuildpacks/builder-jammy-full:latest
latest: Pulling from paketobuildpacks/run-jammy-full
Digest: sha256:29b8d6d812630b52b3bad6c83b108cc437e959d4cc7e4a94c0de927e9e9cb2ca
Status: Image is up to date for paketobuildpacks/run-jammy-full:latest
===> ANALYZING
Image with name "miget/example-1jgiq:latest" not found
===> DETECTING
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
target distro name/version labels not found, reading /etc/os-release file
======== Output: paketo-buildpacks/node-run-script@1.0.23 ========
could not find script(s) [build] in package.json
err: paketo-buildpacks/node-run-script@1.0.23 (1)
======== Output: paketo-buildpacks/node-run-script@1.0.23 ========
could not find script(s) [build] in package.json
err: paketo-buildpacks/node-run-script@1.0.23 (1)
======== Output: paketo-buildpacks/node-run-script@1.0.23 ========
could not find script(s) [build] in package.json
err: paketo-buildpacks/node-run-script@1.0.23 (1)
======== Output: paketo-buildpacks/node-run-script@1.0.23 ========
could not find script(s) [build] in package.json
err: paketo-buildpacks/node-run-script@1.0.23 (1)
======== Output: paketo-buildpacks/node-run-script@1.0.19 ========
could not find script(s) [build] in package.json
err: paketo-buildpacks/node-run-script@1.0.19 (1)
======== Output: paketo-buildpacks/node-run-script@1.0.19 ========
could not find script(s) [build] in package.json
err: paketo-buildpacks/node-run-script@1.0.19 (1)
5 of 11 buildpacks participating
paketo-buildpacks/ca-certificates 3.8.3
paketo-buildpacks/node-engine 4.1.1
paketo-buildpacks/npm-install 1.4.3
paketo-buildpacks/node-start 2.0.1
paketo-buildpacks/npm-start 2.0.1
===> RESTORING
===> BUILDING
target distro name/version labels not found, reading /etc/os-release file
Paketo Buildpack for CA Certificates 3.8.3
https://github.com/paketo-buildpacks/ca-certificates
Build Configuration:
$BP_EMBED_CERTS false Embed certificates into the image
$BP_ENABLE_RUNTIME_CERT_BINDING true Deprecated: Enable/disable certificate helper layer to add certs at runtime
$BP_RUNTIME_CERT_BINDING_DISABLED false Disable certificate helper layer to add certs at runtime
Launch Helper: Contributing to layer
Creating /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper
Paketo Buildpack for Node Engine 4.1.1
Resolving Node Engine version
Candidate version sources (in priority order):
package.json -> "20.x"
<unknown> -> ""
Selected Node Engine version (using package.json): 20.15.0
Executing build process
Installing Node Engine 20.15.0
Completed in 5.029s
Generating SBOM for /layers/paketo-buildpacks_node-engine/node
Completed in 2ms
Configuring build environment
NODE_ENV -> "production"
NODE_HOME -> "/layers/paketo-buildpacks_node-engine/node"
NODE_OPTIONS -> "--use-openssl-ca"
NODE_VERBOSE -> "false"
Configuring launch environment
NODE_ENV -> "production"
NODE_HOME -> "/layers/paketo-buildpacks_node-engine/node"
NODE_OPTIONS -> "--use-openssl-ca"
NODE_VERBOSE -> "false"
Writing exec.d/0-optimize-memory
Calculates available memory based on container limits at launch time.
Made available in the MEMORY_AVAILABLE environment variable.
Writing exec.d/1-inspector
Paketo Buildpack for NPM Install 1.4.3
Resolving installation process
Process inputs:
node_modules -> "Not found"
npm-cache -> "Not found"
package-lock.json -> "Found"
Selected NPM build process: 'npm ci'
Executing launch environment install process
Running 'npm ci --unsafe-perm --cache /layers/paketo-buildpacks_npm-install/npm-cache'
added 80 packages, and audited 81 packages in 1s
14 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
npm notice
npm notice New minor version of npm available! 10.7.0 -> 10.8.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v10.8.2
npm notice To update run: npm install -g npm@10.8.2
npm notice
Completed in 1.175s
Configuring launch environment
NODE_PROJECT_PATH -> "/workspace"
NPM_CONFIG_LOGLEVEL -> "error"
PATH -> "$PATH:/layers/paketo-buildpacks_npm-install/launch-modules/node_modules/.bin"
Generating SBOM for /layers/paketo-buildpacks_npm-install/launch-modules
Completed in 85ms
Paketo Buildpack for Node Start 2.0.1
Assigning launch processes:
web (default): node index.js
Paketo Buildpack for NPM Start 2.0.1
Assigning launch processes:
web (default): sh /workspace/start.sh
===> EXPORTING
Adding layer 'paketo-buildpacks/ca-certificates:helper'
Adding layer 'paketo-buildpacks/node-engine:node'
Adding layer 'paketo-buildpacks/npm-install:launch-modules'
Adding layer 'buildpacksio/lifecycle:launch.sbom'
Adding 1/1 app layer(s)
Adding layer 'buildpacksio/lifecycle:launcher'
Adding layer 'buildpacksio/lifecycle:config'
Adding layer 'buildpacksio/lifecycle:process-types'
Adding label 'io.buildpacks.lifecycle.metadata'
Adding label 'io.buildpacks.build.metadata'
Adding label 'io.buildpacks.project.metadata'
Setting default process type 'web'
Saving miget/example-1jgiq:latest...
*** Images (267205752787):
miget/example-1jgiq:latest
Adding cache layer 'paketo-buildpacks/node-engine:node'
Adding cache layer 'paketo-buildpacks/npm-install:npm-cache'
Adding cache layer 'buildpacksio/lifecycle:cache.sbom'
Successfully built image 'miget/example-1jgiq:latest'
-----> Releasing example-1jgiq...
-----> Checking for predeploy task
No predeploy task found, skipping
-----> Checking for release task
No release task found, skipping
-----> Pushing image to registry
Bumping tag to 2
Retrieving image info for app
Tagging migetyem/example-1jgiq:2 in registry format
Tagging migetyem/example-1jgiq as latest in registry format
Pushing registry.eu-east-1.miget.io/migetyem/example-1jgiq:latest
The push refers to repository [registry.eu-east-1.miget.io/migetyem/example-1jgiq]
83d85471d9f8: Preparing
79553b01918c: Preparing
c60a9b82e095: Preparing
a3f73f9739ec: Preparing
fcbf9ebe8794: Preparing
36ee9da19fb1: Preparing
73c265b9abc4: Preparing
939e0326a137: Preparing
cfaaffd81c8b: Preparing
60a7c85bd839: Preparing
36ee9da19fb1: Waiting
73c265b9abc4: Waiting
939e0326a137: Waiting
cfaaffd81c8b: Waiting
a042f00cd844: Preparing
60a7c85bd839: Waiting
931b7ff0cb6f: Preparing
a042f00cd844: Waiting
a3f73f9739ec: Mounted from migetyem/node-js-hello-world-jfn9y
c60a9b82e095: Mounted from migetyem/node-js-hello-world-jfn9y
fcbf9ebe8794: Mounted from migetyem/node-js-hello-world-jfn9y
79553b01918c: Mounted from migetyem/node-js-hello-world-jfn9y
83d85471d9f8: Mounted from migetyem/node-js-hello-world-jfn9y
36ee9da19fb1: Mounted from migetyem/node-js-hello-world-jfn9y
73c265b9abc4: Mounted from migetyem/node-js-hello-world-jfn9y
cfaaffd81c8b: Mounted from migetyem/node-js-hello-world-jfn9y
939e0326a137: Mounted from migetyem/node-js-hello-world-jfn9y
60a7c85bd839: Mounted from migetyem/node-js-hello-world-jfn9y
a042f00cd844: Mounted from migetyem/node-js-hello-world-jfn9y
931b7ff0cb6f: Mounted from migetyem/node-js-hello-world-jfn9y
latest: digest: sha256:0f7d245e1d5ad20313d34342902674b88bfae1559174b96d1917216536a87a3c size: 2834
Pushing registry.eu-east-1.miget.io/migetyem/example-1jgiq:2
The push refers to repository [registry.eu-east-1.miget.io/migetyem/example-1jgiq]
83d85471d9f8: Preparing
79553b01918c: Preparing
c60a9b82e095: Preparing
a3f73f9739ec: Preparing
fcbf9ebe8794: Preparing
36ee9da19fb1: Preparing
73c265b9abc4: Preparing
939e0326a137: Preparing
cfaaffd81c8b: Preparing
60a7c85bd839: Preparing
a042f00cd844: Preparing
931b7ff0cb6f: Preparing
36ee9da19fb1: Waiting
cfaaffd81c8b: Waiting
73c265b9abc4: Waiting
939e0326a137: Waiting
60a7c85bd839: Waiting
a042f00cd844: Waiting
931b7ff0cb6f: Waiting
79553b01918c: Layer already exists
fcbf9ebe8794: Layer already exists
c60a9b82e095: Layer already exists
83d85471d9f8: Layer already exists
a3f73f9739ec: Layer already exists
cfaaffd81c8b: Layer already exists
73c265b9abc4: Layer already exists
60a7c85bd839: Layer already exists
36ee9da19fb1: Layer already exists
939e0326a137: Layer already exists
a042f00cd844: Layer already exists
931b7ff0cb6f: Layer already exists
2: digest: sha256:0f7d245e1d5ad20313d34342902674b88bfae1559174b96d1917216536a87a3c size: 2834
Cleaning up
Image registry.eu-east-1.miget.io/migetyem/example-1jgiq:2 pushed
Untagging extra tag latest
-----> Deploying example-1jgiq via the kubernetes scheduler...
=====> Deploying via kubernetes
-----> Deploying web to 1
deployment.apps/example-1jgiq-web configured
# deploy/example-1jgiq-web added
# deploy/example-1jgiq-web rs/example-1jgiq-web-5659d69775 added
# deploy/example-1jgiq-web po/example-1jgiq-web-5659d69775-dvvc7 added
# deploy/example-1jgiq-web event: po/example-1jgiq-web-5659d69775-dvvc7 Pulling: Pulling image "registry.eu-east-1.miget.io/migetyem/example-1jgiq:2"
# deploy/example-1jgiq-web event: po/example-1jgiq-web-5659d69775-dvvc7 Pulled: Successfully pulled image "registry.eu-east-1.miget.io/migetyem/example-1jgiq:2" in 260ms (260ms including waiting)
# deploy/example-1jgiq-web event: po/example-1jgiq-web-5659d69775-dvvc7 Created: Created container example-1jgiq-web
# deploy/example-1jgiq-web event: po/example-1jgiq-web-5659d69775-dvvc7 Started: Started container example-1jgiq-web
# deploy/example-1jgiq-web event: ScalingReplicaSet: Scaled down replica set example-1jgiq-web-5dd59486d6 to 0 from 1
# deploy/example-1jgiq-web event: po/example-1jgiq-web-5dd59486d6-vdlb8 Killing: Stopping container example-1jgiq-web
# deploy/example-1jgiq-web become READY
service/example-1jgiq-web unchanged
=====> Deploy complete
-----> Running post-deploy
-----> Checking for postdeploy task
No postdeploy task found, skipping
=====> Application deployed:
http://example-1jgiq.eu-east-1.migetapp.com
To https://git.eu-east-1.miget.io/migetyem/example-1jgiq
* [new branch] main -> main




