{"id":46670,"date":"2021-10-21T00:00:00","date_gmt":"2021-10-21T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/part-one-vuejs-dashboard\/"},"modified":"2025-11-13T12:55:37","modified_gmt":"2025-11-13T20:55:37","slug":"part-one-vuejs-dashboard","status":"publish","type":"post","link":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/blog\/part-one-vuejs-dashboard\/","title":{"rendered":"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker"},"content":{"rendered":"<p>In this tutorial, we&#8217;ll be setting up a Node app with GridDB in a Docker container.<\/p>\n<p>By the end of this tutorial, you&#8217;ll know how to:<\/p>\n<ul>\n<li>Set up a containerized Node and GridDB app with Docker<\/li>\n<li>Create an Express server which connects to GridDB<\/li>\n<\/ul>\n<p>This tutorial will be useful if you&#8217;re using GridDB in an environment like MacOS or another Linux OS which doesn&#8217;t support GridDB. It&#8217;ll also be useful if you want to keep your GridDB app isolated from the rest of your system.<\/p>\n<p>I presume you&#8217;ve got Docker already installed on your system and are familiar with how it works. I also presume you understand the basics of Node.js.<\/p>\n<p>You can access the full code from this tutorial in <a href=\"https:\/\/github.com\/anthonygore\/node-griddb-docker\">this repo<\/a>.<\/p>\n<h2>Setting up Node app<\/h2>\n<p>The first thing we&#8217;ll do is set up a simple Node app. Later, we&#8217;ll containerize it, and then integrate GridDB.<\/p>\n<p>Inside your project directory, create a <em>package.json<\/em> file and add this content:<\/p>\n<p><em>package.json<\/em><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">{\n  \"name\": \"griddb-node-docker\",\n  \"version\": \"1.0.0\",\n  \"description\": \"\",\n  \"author\": \"\",\n  \"main\": \"server.js\",\n  \"scripts\": {\n    \"start\": \"node server.js\"\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>As you can see, we&#8217;ve got a <code>start<\/code> script that runs a file <code>server.js<\/code> which will be our main app file.<\/p>\n<p>Let&#8217;s now create that file and console log a &#8220;Hello, World&#8221; message:<\/p>\n<p><em>server.js<\/em><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">console.log('Hello, World');<\/code><\/pre>\n<\/div>\n<p>To test this works, run <code>npm run start<\/code> from the terminal and you should see your message printed.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ npm run start<\/code><\/pre>\n<\/div>\n<h2>Express server<\/h2>\n<p>Let&#8217;s install <a href=\"https:\/\/expressjs.com\/\">Express<\/a> which allows us to create a quick and simple Node server.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ npm i -S express<\/code><\/pre>\n<\/div>\n<p>We&#8217;ll now set up Express in our <em>server.js<\/em> file. Replace the previous content with:<\/p>\n<p><em>server.js<\/em><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">const express = require('express');\n\nconst PORT = 3000;\nconst HOST = '0.0.0.0';\n\nconst app = express();\napp.get('\/', (req, res) => {\n  res.send('Hello, World');\n});\n\napp.listen(PORT, HOST);\nconsole.log(`Running on http:\/\/${HOST}:${PORT}`);\n<\/code><\/pre>\n<\/div>\n<p>What this does:<\/p>\n<ul>\n<li>Requires Express package<\/li>\n<li>Creates an Express app<\/li>\n<li>Creates a handler for the root path which sends the text &#8220;Hello, World&#8221;<\/li>\n<li>Listens on localhost:3000<\/li>\n<\/ul>\n<p>Let&#8217;s now run the Express server:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ npm run start<\/code><\/pre>\n<\/div>\n<p>To test our Express server is working, let&#8217;s use Curl in another terminal:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ curl http:\/\/localhost:3000<\/code><\/pre>\n<\/div>\n<p>You should get the &#8220;Hello, World&#8221; message back.<\/p>\n<h2>Nodemon<\/h2>\n<p>If we make changes to our Node\/Express app, we need to restart the server manually for the changes to take effect.<\/p>\n<p>This is not ideal when developing with Docker, because we&#8217;ll have to keep starting and stopping the Docker app.<\/p>\n<p>A better solution is to use the <code>nodemon<\/code> package to run our server as this will watch our files and automatically restart the server if anything changes.<\/p>\n<p>Let&#8217;s kill our Express server (Ctrl+C) and install Nodemon:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ npm i -S nodemon<\/code><\/pre>\n<\/div>\n<p>Now, alter our package.json start script so it uses Nodemon.<\/p>\n<p><em>package.json<\/em><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">{\n  ...\n  \"scripts\": {\n    \"start\": \"nodemon server.js\"\n  }\n}<\/code><\/pre>\n<\/div>\n<p>Now, if we make any modification to our <em>server.js<\/em> file the Express server will automatically restart.<\/p>\n<h2>Node app container<\/h2>\n<p>Now, we&#8217;re going to containerize the Node\/Express app with Docker. We&#8217;re also going to include the Node GridDB connector so that your Node app can talk to GridDB.<\/p>\n<p>Create a new file <em>Dockerfile<\/em> in your app directory, and include the following:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">FROM node:10\n\nRUN wget https:\/\/github.com\/griddb\/c_client\/releases\/download\/v4.3.0\/griddb-c-client_4.3.0_amd64.deb\nRUN dpkg -i griddb-c-client_4.3.0_amd64.deb\n\nWORKDIR \/opt\/nodejs\nCOPY package*.json .\/\nRUN npm install --quiet\n\nENV LD_LIBRARY_PATH \/usr\/griddb_c_client-4.3.0\/lib\/\n<\/code><\/pre>\n<\/div>\n<p>What this does:<\/p>\n<ul>\n<li>Uses the official Node v10 image as a base<\/li>\n<li>Downloads and installs the GridDB Node connector<\/li>\n<li>Create a directory for the app in the container and copies your package json file there<\/li>\n<li>Installs NPM dependencies<\/li>\n<li>Puts the GridDB connector location as an environment variable<\/li>\n<\/ul>\n<p>With that done, we can now build the image:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">docker build . -t node-express-griddb<\/code><\/pre>\n<\/div>\n<p>The <code>-t<\/code> flag allows us to give our image a tag so we can easily find it.<\/p>\n<p>Once the image has finished building run <code>docker images<\/code> in the terminal and you should see it.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">REPOSITORY                TAG       IMAGE ID       CREATED          SIZE\nnode-express-griddb       latest    8c191df53772   13 seconds ago   954MB<\/code><\/pre>\n<\/div>\n<h2>Adding GridDB with Docker Compose<\/h2>\n<p>We&#8217;ve now got the Node app and GridDB Node connector in an image. To make a working app, we&#8217;ll use Docker Compose and add in GridDB.<\/p>\n<p>Go ahead and create a file <code>docker-compose.yml<\/code> in the app directory, and include the following:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">version: \"3.8\"\nservices:\n  web:\n    build:\n      context: .\/\n    volumes:\n      - .:\/opt\/nodejs\n            - \/opt\/nodejs\/node_modules\n    command: npm run start\n    ports:\n      - \"3000:3000\"\n    depends_on:\n      - griddb\n  griddb:\n    image: \"griddbnet\/griddb\"<\/code><\/pre>\n<\/div>\n<p>What this does:<\/p>\n<ul>\n<li>Creates a service that uses the image we just created<\/li>\n<li>Mounts our current directory in the container<\/li>\n<li>Exposes port 3000<\/li>\n<li>Create a second service from the <a href=\"https:\/\/hub.docker.com\/r\/griddbnet\/griddb\">official GridDB Docker image<\/a>.<\/li>\n<\/ul>\n<p>You should also create a file <code>.dockerignore<\/code> which tells Docker to ignore certain files. Since we&#8217;re mounting your app directory, we don&#8217;t want to include local environment and project files.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">node_modules\nnpm-debug.log\n.git\n.idea<\/code><\/pre>\n<\/div>\n<h2>Running Docker app<\/h2>\n<p>Now that we have our services defined, we can build the application using:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ docker-compose up<\/code><\/pre>\n<\/div>\n<p>In another terminal well use Curl to confirm the app is working.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ curl http:\/\/localhost:3000<\/code><\/pre>\n<\/div>\n<p>You should again get the &#8220;Hello, World&#8221; message back. This time, though, the app is running from an isolated Docker environment.<\/p>\n<h2>Working with GridDB Node Client<\/h2>\n<p>We&#8217;ve now got a Dockerized Node and GridDB environment. We can start developing a GridDB-based app now.<\/p>\n<p>First, we&#8217;ll need to use the GridDB Node client package, so let&#8217;s install that:<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">$ npm i -S griddb_node<\/code><\/pre>\n<\/div>\n<blockquote>\n<p>Note: after installing new packages you&#8217;ll need to rebuild the image as the NPM dependencies are written to the image. To do this, kill your docker-compose app and run <code>docker-compose up --build<\/code> to start it again and rebuild the image.<\/p>\n<\/blockquote>\n<p>Let&#8217;s now create a new file, <em>db.js<\/em>, where we&#8217;ll set up our GridDB instance so it can be used in our Express server.<\/p>\n<p><em>db.js<\/em><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-sh\">const griddb = require('griddb_node');\n\nconst connect = () => {\n  const factory = griddb.StoreFactory.getInstance();\n  return factory.getStore({\n    \"notificationMember\": \"griddb:10001\",\n    \"clusterName\": \"defaultCluster\",\n    \"username\": \"admin\",\n    \"password\": \"admin\"\n  });\n};\n\nmodule.exports = { connect };\n<\/code><\/pre>\n<\/div>\n<p>This exports a method <code>connect<\/code> which returns a GridDB store. This will work flawlessly in the Docker environment because the GridDB container exposes port 10001.<\/p>\n<h2>Connecting to GridDB in an Express App<\/h2>\n<p>We can now require our <em>db<\/em> module in the main server app. When we call <code>connect<\/code>, we get back a <a href=\"https:\/\/griddb.org\/nodejs_client\/NodejsAPIReference.htm\">Store<\/a> instance which can then be used to read and write GridDB containers.<\/p>\n<p><em>server.js<\/em><\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-javascript\">const express = require('express');\nconst db = require('.\/db');\n\nconst store = db.connect();\n\n...\n<\/code><\/pre>\n<\/div>\n<p>This concludes part one of our blog. In part two, we will actually go in and create a dashboard using this new-found knowledge<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we&#8217;ll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you&#8217;ll know how to: Set up a containerized Node and GridDB app with Docker Create an Express server which connects to GridDB This tutorial will be useful if you&#8217;re using GridDB in an [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":25791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"In this tutorial, we&#039;ll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you&#039;ll know how to: Set up a\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"In this tutorial, we&#039;ll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you&#039;ll know how to: Set up a\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-10-21T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:55:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2018\/07\/blog_title_28.png\" \/>\n\t<meta property=\"og:image:width\" content=\"870\" \/>\n\t<meta property=\"og:image:height\" content=\"490\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"griddb-admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker\",\"datePublished\":\"2021-10-21T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:55:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\"},\"wordCount\":921,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2018\/07\/blog_title_28.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\",\"name\":\"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2018\/07\/blog_title_28.png\",\"datePublished\":\"2021-10-21T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:55:37+00:00\",\"description\":\"In this tutorial, we'll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you'll know how to: Set up a\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2018\/07\/blog_title_28.png\",\"contentUrl\":\"\/wp-content\/uploads\/2018\/07\/blog_title_28.png\",\"width\":870,\"height\":490},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb.net\/en\/#website\",\"url\":\"https:\/\/griddb.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"caption\":\"griddb-admin\"},\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker | GridDB: Open Source Time Series Database for IoT","description":"In this tutorial, we'll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you'll know how to: Set up a","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/","og_locale":"en_US","og_type":"article","og_title":"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker | GridDB: Open Source Time Series Database for IoT","og_description":"In this tutorial, we'll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you'll know how to: Set up a","og_url":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2021-10-21T07:00:00+00:00","article_modified_time":"2025-11-13T20:55:37+00:00","og_image":[{"width":870,"height":490,"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/wp-content\/uploads\/2018\/07\/blog_title_28.png","type":"image\/png"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"griddb-admin","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker","datePublished":"2021-10-21T07:00:00+00:00","dateModified":"2025-11-13T20:55:37+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/"},"wordCount":921,"commentCount":0,"publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2018\/07\/blog_title_28.png","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/","url":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/","name":"Part 1 of Building a Frontend Dashboard: Set Up GridDB on MacOS with Node and Docker | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2018\/07\/blog_title_28.png","datePublished":"2021-10-21T07:00:00+00:00","dateModified":"2025-11-13T20:55:37+00:00","description":"In this tutorial, we'll be setting up a Node app with GridDB in a Docker container. By the end of this tutorial, you'll know how to: Set up a","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/part-one-vuejs-dashboard\/#primaryimage","url":"\/wp-content\/uploads\/2018\/07\/blog_title_28.png","contentUrl":"\/wp-content\/uploads\/2018\/07\/blog_title_28.png","width":870,"height":490},{"@type":"WebSite","@id":"https:\/\/griddb.net\/en\/#website","url":"https:\/\/griddb.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","caption":"griddb-admin"},"url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/comments?post=46670"}],"version-history":[{"count":1,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46670\/revisions"}],"predecessor-version":[{"id":51344,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/posts\/46670\/revisions\/51344"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media\/25791"}],"wp:attachment":[{"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/media?parent=46670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/categories?post=46670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/wp-json\/wp\/v2\/tags?post=46670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}