<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nicolas PENNEC</title>
    <description>The latest articles on DEV Community by Nicolas PENNEC (@nicopennec).</description>
    <link>https://dev.to/nicopennec</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F248839%2Fa240949c-f146-4478-aea8-aee1759b5ce4.png</url>
      <title>DEV Community: Nicolas PENNEC</title>
      <link>https://dev.to/nicopennec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nicopennec"/>
    <language>en</language>
    <item>
      <title>Run a Deno app in production on Cloud 🚀</title>
      <dc:creator>Nicolas PENNEC</dc:creator>
      <pubDate>Fri, 08 Apr 2022 12:56:19 +0000</pubDate>
      <link>https://dev.to/oxygenit/run-a-deno-app-in-production-on-cloud-1g5n</link>
      <guid>https://dev.to/oxygenit/run-a-deno-app-in-production-on-cloud-1g5n</guid>
      <description>&lt;p&gt;Deno is a modern runtime for JavaScript or TypeScript on server side that has been getting some hype recently. Not a fork of Node.js, but it's a robust alternative on several points, such as performance and security.&lt;/p&gt;

&lt;p&gt;Let's see together how to install and use Deno on your laptop by developing a basic web app with a server written in TypeScript. So how to easily deploy and scale any Deno application in production with Docker on the cloud provider of your choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Deno?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://deno.land/" rel="noopener noreferrer"&gt;Deno&lt;/a&gt; is a modern, simple and secure runtime for JavaScript and TypeScript that uses &lt;a href="https://v8.dev/" rel="noopener noreferrer"&gt;V8&lt;/a&gt; and is built in &lt;a href="https://www.rust-lang.org/" rel="noopener noreferrer"&gt;Rust&lt;/a&gt;. It is an open source project created by Ryan Dahl, creator of &lt;a href="https://nodejs.org/" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3egyovfn5bktnyu8e3k3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3egyovfn5bktnyu8e3k3.png" alt="Deno logo" width="230" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the little story, Ryan Dahl officially released the first version of Deno in May 2018. This new server-side runtime was designed to address several design issues intrinsic to the Node.js runtime. During the JSconf EU of 2018, Dahl himself admitted &lt;a href="https://www.youtube.com/watch?v=M3BM9TB-8yA" rel="noopener noreferrer"&gt;10 things he regrets about Node.js&lt;/a&gt;, especially about dependencies, modules, and security. &lt;/p&gt;

&lt;p&gt;It's important to be mindful that Deno is not a replacement or a fork of the Node runtime, although its name is an anagram of Node 🙃&lt;/p&gt;

&lt;p&gt;Its purpose is to be an alternative to Node.js with the following key features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure by default.&lt;/li&gt;
&lt;li&gt;Native support of TypeScript.&lt;/li&gt;
&lt;li&gt;Ships a single executable file with no dependencies.&lt;/li&gt;
&lt;li&gt;Built-in utilities, like linter, formatter, or bundler.&lt;/li&gt;
&lt;li&gt;Set of reviewed standard modules that guarantee compatibility with Deno.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since the 1.0 release in May 2020, Deno is officially stable and production ready. The runtime evolves very quickly with regular releases and shipping of new standard libraries that cover wide needs for developers, see &lt;a href="https://deno.land/std/" rel="noopener noreferrer"&gt;https://deno.land/std/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Under the hood Deno was built with Rust, for its core part and the event loop. Take a look at the source code of Deno publishes on GitHub: &lt;a href="https://github.com/denoland/deno" rel="noopener noreferrer"&gt;https://github.com/denoland/deno&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;To follow this tutorial, we will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic knowledge of &lt;a href="https://www.typescriptlang.org/" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Basic knowledge of &lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;, and more specifically about &lt;a href="https://docs.docker.com/engine/reference/builder/" rel="noopener noreferrer"&gt;Dockerfile&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Node.js &amp;lt;= 12, required for the deployment step. We recommend to install the &lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;latest LTS version&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Deno installation
&lt;/h2&gt;

&lt;p&gt;You can easily install Deno on your computer using the installers below:&lt;/p&gt;

&lt;p&gt;Shell (Linux, Mac):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://deno.land/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PowerShell (Windows):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;iwr https://deno.land/install.ps1 &lt;span class="nt"&gt;-useb&lt;/span&gt; | iex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See &lt;a href="https://github.com/denoland/deno_install" rel="noopener noreferrer"&gt;deno_install&lt;/a&gt; for more installation options.&lt;/p&gt;

&lt;p&gt;Finally, check your Deno installation with the &lt;code&gt;version&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once installed, Deno can also upgrade itself to the latest release, using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Code &amp;amp; Run your Deno project
&lt;/h2&gt;

&lt;p&gt;For this tutorial, we will write a simple HTTP server that returns a customizable "&lt;em&gt;hello world&lt;/em&gt;" message and your current Deno version installed.&lt;/p&gt;

&lt;p&gt;First of all, create a new directory &lt;code&gt;deno-app&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;deno-app
&lt;span class="nb"&gt;cd &lt;/span&gt;deno-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a new TypeScript file &lt;code&gt;index.ts&lt;/code&gt; in the project directory, and copy the following code into it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// deno-app/index.ts&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;serve&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://deno.land/std@0.134.0/http/server.ts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;Response&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;URL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pathname&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;World&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Deno&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;deno&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Hello &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; from Deno v&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`HTTP server listening on port &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;serve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;handler&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;h3&gt;
  
  
  💡 Developer tip
&lt;/h3&gt;

&lt;p&gt;If you are using Visual Studio Code, we recommend to install the &lt;a href="https://marketplace.visualstudio.com/items?itemName=denoland.vscode-deno" rel="noopener noreferrer"&gt;Deno VS Code plugin&lt;/a&gt;. This extension adds support of Deno to your IDE and some helpers!&lt;br&gt;&lt;br&gt;
To enable the Deno plugin in your project, open the VS Code command palette with &lt;em&gt;Ctrl+Shift+P&lt;/em&gt;, and run the &lt;em&gt;Deno: Initialize Workspace Configuration&lt;/em&gt; command.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Next, launch your script with your local runtime through the &lt;code&gt;deno run&lt;/code&gt; command. Add the &lt;code&gt;--watch&lt;/code&gt; flag to watch for file changes and restart process automatically. For security concerns, you have to use the &lt;code&gt;--allow-net&lt;/code&gt; flag to allow the network access.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;deno run &lt;span class="nt"&gt;--watch&lt;/span&gt; &lt;span class="nt"&gt;--allow-net&lt;/span&gt; index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open your favorite browser, and go the following URL "&lt;a href="http://localhost:8080/you" rel="noopener noreferrer"&gt;http://localhost:8080/you&lt;/a&gt;" to test your fresh Deno application. You can make a change in your source code to observe the livereload feature in action.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploy your Deno app on Cloud
&lt;/h2&gt;

&lt;p&gt;To easily deploy your Deno server on the cloud provider of your choice (AWS, Azure, GCP, ...), we will use the ScaleDynamics platform to speed up the deployment process without devops knowledge.&lt;/p&gt;

&lt;h3&gt;
  
  
  Open your account
&lt;/h3&gt;

&lt;p&gt;First, create a free account on the ScaleDynamics platform. Go to the &lt;a href="https://console.scaledynamics.com/auth/signup/" rel="noopener noreferrer"&gt;sign up form&lt;/a&gt;, no credit card required!&lt;/p&gt;

&lt;p&gt;Once your account is ready, with a confirmed email and a default organization created, you have to install the ScaleDynamics SDK on your device:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;warp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then login once to your ScaleDynamics account with the command below, and select your default organization:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Prepare your project &amp;amp; env
&lt;/h3&gt;

&lt;p&gt;Now let's create a new "&lt;strong&gt;deno-app&lt;/strong&gt;" project in your current organization:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp project create deno-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And create a new "&lt;strong&gt;prod&lt;/strong&gt;" environment, using the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp &lt;span class="nb"&gt;env &lt;/span&gt;create prod
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Select a Cloud resource
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to your &lt;strong&gt;&lt;a href="https://scaledynamics.com/console" rel="noopener noreferrer"&gt;ScaleDynamics Console&lt;/a&gt;&lt;/strong&gt; to select your new Organization &amp;gt; Project &amp;gt; Environment.&lt;/li&gt;
&lt;li&gt;Click on the "&lt;strong&gt;Add new service&lt;/strong&gt;" button in the Environment panel.&lt;/li&gt;
&lt;li&gt;Select the "&lt;strong&gt;Managed HTTP Docker&lt;/strong&gt;" service to deploy a HTTP docker using your favorite stack.&lt;/li&gt;
&lt;li&gt;Select a Cloud resource to run your web app. You can choose the free "&lt;strong&gt;shared&lt;/strong&gt;" provider for this tutorial, or select the cloud provider and region of your choice.&lt;/li&gt;
&lt;li&gt;Finally click on the "&lt;strong&gt;Apply&lt;/strong&gt;" action to confirm your cloud resource creation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7w4wagbez2qvk68xp8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe7w4wagbez2qvk68xp8k.png" alt="ScaleDynamics Console in action" width="800" height="596"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy on Cloud
&lt;/h3&gt;

&lt;p&gt;Your cloud resource is ready now. Go back to your source code, and create a new &lt;code&gt;Dockerfile&lt;/code&gt; at root of your project, in order to run your Deno server with Docker.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="c"&gt;# deno-app/Dockerfile&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; denoland/deno:latest&lt;/span&gt;
&lt;span class="k"&gt;WORKDIR&lt;/span&gt;&lt;span class="s"&gt; /usr/src/app&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; . .&lt;/span&gt;
&lt;span class="k"&gt;EXPOSE&lt;/span&gt;&lt;span class="s"&gt; 8080&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["deno", "run", "--allow-net", "index.ts"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In your terminal, run the &lt;code&gt;warp deploy&lt;/code&gt; command to start a deployment of your Deno application, thanks to the ScaleDynamics SDK, and follow the interactive mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9kkfy1mt9722fp0hzwf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9kkfy1mt9722fp0hzwf.png" alt="ScaleDynamics deployment in action" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your server is live 🚀&lt;/p&gt;

&lt;p&gt;The SDK will return the public URL of your web app. You can now write an awesome Deno application, deploy it and scale it on Cloud with &lt;a href="https://scaledynamics.com/" rel="noopener noreferrer"&gt;ScaleDynamics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Learn more about &lt;code&gt;warp deploy&lt;/code&gt; command and its capabilities in the &lt;a href="https://docs.scaledynamics.com/docs/sdk/cli#deploy" rel="noopener noreferrer"&gt;SDK documentation&lt;/a&gt;. For an optimized use, we recommend to &lt;a href="https://docs.scaledynamics.com/docs/advanced-usage/cicd" rel="noopener noreferrer"&gt;deploy from a CI/CD workflow&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go further with Metrics
&lt;/h2&gt;

&lt;p&gt;Once your application running in production, it is crucial to monitor it to track its health status (CPU, memory, ...), any server errors, or the carbon footprint of your project.&lt;/p&gt;

&lt;p&gt;From the ScaleDynamics Console, you have a realtime monitoring of your web application with the Metrics dashboard of each Cloud resource. Every metric is provided for a given resource over a period of an hour or a day. You can access them for the last 24 hours, the last 7 days or the last 30 days.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64ew84q2vwaj7jt0uzla.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64ew84q2vwaj7jt0uzla.png" alt="ScaleDynamics metrics in action" width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note that this feature is currently available for all cloud resources available on the platform (public cloud, on-premise, ...), except free shared resources. So, for production use we recommend upgrading your service to a dedicated resource.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Know more details about &lt;a href="https://docs.scaledynamics.com/docs/metrics" rel="noopener noreferrer"&gt;Metrics on the ScaleDynamics documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🙏&lt;/p&gt;

&lt;p&gt;Your turn now to have fun with Deno and run it on Cloud!&lt;/p&gt;

</description>
      <category>deno</category>
      <category>docker</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
    <item>
      <title>How to deploy Drupal on cloud with Docker</title>
      <dc:creator>Nicolas PENNEC</dc:creator>
      <pubDate>Mon, 21 Mar 2022 17:23:07 +0000</pubDate>
      <link>https://dev.to/oxygenit/how-to-deploy-drupal-on-cloud-with-docker-j09</link>
      <guid>https://dev.to/oxygenit/how-to-deploy-drupal-on-cloud-with-docker-j09</guid>
      <description>&lt;p&gt;Drupal is an open source content management platform powering millions of websites and applications.&lt;br&gt;
We will see how you can easily deploy a simple Drupal website on Docker to the cloud with ScaleDynamics.&lt;/p&gt;
&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.drupal.org/" rel="noopener noreferrer"&gt;Drupal&lt;/a&gt; is one of the most popular CMS (Content Management Software).&lt;br&gt;
Build with &lt;a href="https://www.php.net/" rel="noopener noreferrer"&gt;PHP&lt;/a&gt;, It is a versatile open source platform for building amazing digital experiences.&lt;br&gt;
Drupal is used to make many of the websites and applications you use every day, see the &lt;a href="https://www.drupal.com/showcases" rel="noopener noreferrer"&gt;official showcases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqgdgs7cikiswonlwe11.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqgdgs7cikiswonlwe11.png" alt="Drupal logo" width="335" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drupal has great standard features, like easy content authoring, reliable performance, and excellent security.&lt;br&gt;
But what sets it apart is its flexibility; modularity is one of its core principles.&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;To follow this tutorial, we will need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js &amp;lt;= 12, we recommend to install the &lt;a href="https://nodejs.org/en/download/" rel="noopener noreferrer"&gt;latest LTS version&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Basic knowledge of &lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;, and more specifically about &lt;a href="https://docs.docker.com/engine/reference/builder/" rel="noopener noreferrer"&gt;Dockerfile&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Init your Drupal application
&lt;/h2&gt;

&lt;p&gt;From your terminal, start by creating a new folder named &lt;code&gt;drupal-app&lt;/code&gt; and change directory into it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;drupal-app
&lt;span class="nb"&gt;cd &lt;/span&gt;drupal-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then create a new file named &lt;code&gt;Dockerfile&lt;/code&gt; and paste the following code into it, in order to build you container from an &lt;a href="https://hub.docker.com/_/drupal" rel="noopener noreferrer"&gt;official image of Drupal&lt;/a&gt; downloaded from &lt;a href="https://hub.docker.com/" rel="noopener noreferrer"&gt;Docker Hub&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# drupal-app/Dockerfile

FROM drupal:latest
EXPOSE 80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this configuration, we have chosen the official Drupal image with the &lt;code&gt;latest&lt;/code&gt; tag. For a production use case, we recommend setting a stable version with a specified number, like &lt;code&gt;drupal:9.3&lt;/code&gt; for example.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure your cloud deployment
&lt;/h2&gt;

&lt;p&gt;The application is ready, now let's look at the deployment part.&lt;/p&gt;

&lt;h3&gt;
  
  
  Account creation and resource selection
&lt;/h3&gt;

&lt;p&gt;To deploy this application on ScaleDynamics's cloud, you need an account and create an environment with a resource for it. The cloud resource provides virtual CPU and storage capacities used to execute the app. In this tutorial we will use a free shared resource available on ScaleDynamics’s cloud. These are the best one for testing. In this tutorial we will see later how you can upgrade to a dedicated production resource on the public cloud provider and region of your choice.&lt;/p&gt;

&lt;p&gt;If you don't have an account, feel free to create one &lt;a href="https://console.scaledynamics.com/auth/signup/" rel="noopener noreferrer"&gt;here&lt;/a&gt; (it's free and no credit card are required). Once your account is created, sign in.&lt;/p&gt;

&lt;p&gt;Let's create a project and an environment on the ScaleDynamics's &lt;a href="https://scaledynamics.com/console" rel="noopener noreferrer"&gt;Console&lt;/a&gt;. Select your organization, create a new project, then create a new environment. Now you need to choose what kind of service is required for your deployment. There are four types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Managed HTTP Docker&lt;/li&gt;
&lt;li&gt;Managed Node.js server&lt;/li&gt;
&lt;li&gt;Managed Node.js module&lt;/li&gt;
&lt;li&gt;Static assets hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For this Drupal project, we need a Docker container to run the PHP server. Let's pick the &lt;strong&gt;managed HTTP Docker&lt;/strong&gt;. You can learn more on the other types in the &lt;a href="https://docs.scaledynamics.com/" rel="noopener noreferrer"&gt;ScaleDynamics documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjuhgnbeo3lumwl555708.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjuhgnbeo3lumwl555708.gif" alt="Environment creation" width="600" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration file
&lt;/h3&gt;

&lt;p&gt;Now let's add a configuration to tell the SDK what type of application we want to deploy.&lt;br&gt;&lt;br&gt;
At the root of the project, create a new file named &lt;code&gt;warp.config.js&lt;/code&gt; with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// drupal-app/warp.config.js&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;docker&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;drupal-app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deploy your Drupal container
&lt;/h2&gt;

&lt;p&gt;Next to deploy your container on the ScaleDynamics platform, you have to use the CLI from SDK.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install SDK
&lt;/h3&gt;

&lt;p&gt;First, install once our public SDK called &lt;a href="https://www.npmjs.com/package/warp" rel="noopener noreferrer"&gt;&lt;code&gt;warp&lt;/code&gt;&lt;/a&gt; and available on the official npm registry: &lt;a href="https://www.npmjs.com/package/warp" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/warp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install the library as development dependency in your project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--save-dev&lt;/span&gt; warp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, install it as an npm global dependency on your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; warp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the next steps, we will use the &lt;code&gt;npx&lt;/code&gt; command to run each &lt;code&gt;warp&lt;/code&gt; command.&lt;br&gt;&lt;br&gt;
The &lt;code&gt;npx&lt;/code&gt; command allows you to run an arbitrary command from an npm package (either one installed locally, or fetched remotely), in a similar context as running it via &lt;code&gt;npm run&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;If you need help on the &lt;code&gt;warp&lt;/code&gt; CLI, just run the help command as below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See more about &lt;a href="https://docs.scaledynamics.com/docs/installation" rel="noopener noreferrer"&gt;SDK installation&lt;/a&gt; and its use in the ScaleDynamics documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Login to ScaleDynamics
&lt;/h3&gt;

&lt;p&gt;For the first time, you must login to the ScaleDynamics platform. So run once the &lt;code&gt;warp login&lt;/code&gt; command to enter your account credentials:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that the prompt will ask you to select an organization, only if you have more than one!&lt;/p&gt;

&lt;h3&gt;
  
  
  Run deployment
&lt;/h3&gt;

&lt;p&gt;Now it's time to deploy your awesome Drupal project on your managed cloud resource.&lt;/p&gt;

&lt;p&gt;To achieve that step, you just need to run the &lt;code&gt;warp deploy&lt;/code&gt; simple command line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The deploy command will detect that your application needs to be deployed as Docker resource. The interactive mode will ask you to pick a project and an environnement, in order to deploy your Drupal container on cloud. Then you will have to choose a domain name as public URL. Leave blank if you want a generate random one.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuk4hnvito5h3u24prbt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxuk4hnvito5h3u24prbt.png" alt="npx deploy" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your Drupal container is now deployed and ready to use from the returned public URL! On the next step, you will have to configure your Drupal website.&lt;/p&gt;

&lt;p&gt;In addition, you can automate your deployment and avoid interactive mode with the following options. It can be useful to run that operation from your &lt;a href="https://docs.scaledynamics.com/docs/advanced-usage/cicd" rel="noopener noreferrer"&gt;CI/CD pipeline&lt;/a&gt; by example.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx warp deploy &lt;span class="nt"&gt;--project&lt;/span&gt; &amp;lt;project-name&amp;gt; &lt;span class="nt"&gt;--env&lt;/span&gt; &amp;lt;env-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See more about &lt;code&gt;warp deploy&lt;/code&gt; command in the &lt;a href="https://docs.scaledynamics.com/docs/sdk/cli#deploy" rel="noopener noreferrer"&gt;SDK documentation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup your Drupal website
&lt;/h2&gt;

&lt;p&gt;Open your browser, go the URL of your managed Docker resource that now serves your Drupal container and start the setup "set-by-step" of your website.&lt;/p&gt;

&lt;p&gt;The first load will show you the Drupal interactive initial setup. First, pick your language on form and continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lxv24lmzpobq9ydqmg7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0lxv24lmzpobq9ydqmg7.png" alt="drupal setup step 1" width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then select the "&lt;strong&gt;Demo: Umami Food Magazine&lt;/strong&gt;" as current installation profile. This option will generate a ready-to-use website sample built from the Drupal CMS that show off some of its most common capabilities. If you are already familiar with the Drupal platform, choose a "Standard" or "Minimal" profile according to your needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0ziglipazpstw4ldb9p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk0ziglipazpstw4ldb9p.png" alt="drupal setup step 2" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next step, select the "&lt;strong&gt;SQLite&lt;/strong&gt;" database for this sample and set your admin password. For production usage, we recommend using an external database, like MySQL or PostgreSQL. You can easily find a DBaaS (Database-as-a-Service) provider to host your data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfz0nbpvq6fb10i9ty16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzfz0nbpvq6fb10i9ty16.png" alt="drupal setup step 3" width="800" height="539"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally step, just wait for the complete installation...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkeweyhtbvoonrkgeciy8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkeweyhtbvoonrkgeciy8.png" alt="drupal setup step 4" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well done! Your new Drupal website is now live on the cloud provider of your choice.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68vxp4rkrqkkxyupuf30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68vxp4rkrqkkxyupuf30.png" alt="drupal website homepage" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can go in the "&lt;strong&gt;Log in&lt;/strong&gt;" section of your published website, enter your admin credentials and try the awesome features offered by the Drupal platform 🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx930vxeoafn90kna8s28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx930vxeoafn90kna8s28.png" alt="drupal website homepage" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note that you can easily import, export, and synchronize your Drupal configuration from the administration page. See details on the &lt;a href="https://www.drupal.org/docs/configuration-management/managing-your-sites-configuration" rel="noopener noreferrer"&gt;Drupal documentation&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Go further with dedicated resources
&lt;/h2&gt;

&lt;p&gt;If you need a powerful resource with more vCPU, RAM or storage to host your production server, you can upgrade dynamically to a dedicated resource from your &lt;a href="https://console.scaledyn.com/" rel="noopener noreferrer"&gt;ScaleDynamics Console&lt;/a&gt;. As shown below it's as simple as a few clicks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo91zuvj5ag49elxiydcn.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo91zuvj5ag49elxiydcn.gif" alt="Upgrade to dedicated" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s next
&lt;/h2&gt;

&lt;p&gt;At this stage, you have an awesome Drupal website published on cloud with Docker.&lt;/p&gt;

&lt;p&gt;You can learn more on the &lt;a href="https://docs.scaledynamics.com/" rel="noopener noreferrer"&gt;ScaleDynamics documentation&lt;/a&gt;, like how to get the logs of your server, use a custom domain, implement a CI/CD pipeline, etc.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

</description>
      <category>drupal</category>
      <category>docker</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
