Dokkuを導入する

本格的にVPNを導入する」の続きです。
先日、VPSを契約してVPNを構築し、どこからでも塾のシステムにアクセスできるようにしました。塾のLANで動いているミニPCにdnsmasqを使って簡易DNSを立てて、リモートからでもローカルからでも、塾のコンピューターにホスト名でアクセスできるようにしましたが、その設定の最中にProxmox実験機がほとんど使われることなく動いているのを思い出しました。そこでこの遊んでいるProxmox機を有効活用してようと思い始めたのが今日のテーマDokkuの導入です。

DokkuはPaaS (Platform as a Service)のHerokuに似たソフトウェアで、ローカルPCでNodeJSで開発したアプリケーションをGit pushするだけでビルド&デプロイしてくれます。

プロジェクトをGit pushすると、こんな感じに動きます。これでWebアプリケーションが立ち上がるわけです。

$ git push dokku main

Enumerating objects: 174, done.
Counting objects: 100% (174/174), done.
Delta compression using up to 20 threads
Compressing objects: 100% (162/162), done.
Writing objects: 100% (170/170), 128.19 KiB | 9.16 MiB/s, done.
Total 170 (delta 15), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (15/15), completed with 4 local objects.
remote: -----> Cleaning up...
remote: -----> Building hello from herokuish
remote: -----> Adding BUILD_ENV to build environment...
remote:        BUILD_ENV added successfully
-----> Node.js app detected
       
-----> Creating runtime environment
       
       NPM_CONFIG_LOGLEVEL=error
       NODE_VERBOSE=false
       NODE_ENV=production
       NODE_MODULES_CACHE=true
       
-----> Installing binaries
       engines.node (package.json):   unspecified
       engines.npm (package.json):    unspecified (use default)
       
       Resolving node version 22.x...
       Downloading and installing node 22.19.0...
       Validating checksum
       Using default npm version: 10.9.3
       
-----> Restoring cache
       - npm cache
       
-----> Installing dependencies
       Prebuild detected (node_modules already exists)
       Rebuilding any native modules
       rebuilt dependencies successfully
       Installing any new modules (package.json)
       
       up to date, audited 84 packages in 827ms
       
       14 packages are looking for funding
       run `npm fund` for details
       
       found 0 vulnerabilities
       
-----> Build
       
-----> Caching build
       - npm cache

... 中略 ...

remote: =====> Application deployed:
remote:        http://hello.apps.zikuu.lan
remote:        https://hello.apps.zikuu.lan
remote: 
To apps.zikuu.lan:hello
   c21ce57..3938591  main -> main

簡単なHelloWorldアプリケーションを作り、ブラウザからアクセスしたのが冒頭のスクリーンショットです。

PostgreSQLプラグインを使えるようにし、データベースへのアクセスもできている様子が下のスクリーンショット。

Web UIがないので、インスタンス管理はDockerコンテナ管理ツールのPortainerで行います。

塾内でアプリケーションを作って遊ぶ(学ぶ)にはこんなので十分です。

調べながらの作業だったので、5時間くらいかかりました。いつものように手順書にまとめて塾生と共有できるようにしています。

JavaScript/TypeScript/Pythonなどによるプログラミングの他に、Gitを使ったCI/CD (Continuous Integration/Continuous Delivery = ソフトウェアのマージからリリースまでの自動化)やProxmoxやDockerなどの仮想化/コンテナ化の仕組みは、現代のプログラマーなら知っていないと困る技術です。

これにAIアシスタントが加わり、ソフトウェアの開発から製品やサービスの配布までを、一人のプログラマーが短期間でこなせる時代になってしまいました。

私も含めて、何でも知っている人などいません。知ろうと思った時がやる時です。「今さら聞けない・・・」などと言わずに、知りたいと思ったらすぐに勉強しましょう。私もそう心がけます。

「Dokkuを導入する」への1件のフィードバック

コメントする