不意にDenoを動かしてみたくなったので、Docker上でまずは起動させてみようと思う。
DenoをDockerで動かすことに関してはリポジトリ内にもissueが上がっていたので、まずはそちらを読んでみた。
上のissueに書かれていたもので、deno-dockerというリポジトリがあるので、こちらを使ってDocker上でdenoを動かしてみる。
Docker上でdenoを動かす
以下、備忘録。
ひとまずはDocker hubで用意されているdocker imageをpullして起動させてみる。
https://hub.docker.com/r/maxmcd/deno
# Docker hubで用意されている最新のimage(tag:latest)をpull docker pull maxmcd/deno # docker起動してbash docker run -it --rm --name deno-test maxmcd/deno /bin/bash
これでdockerが立ち上がるので、試しに下記のコマンドでdenoを動かせることを確認。
deno --version # => deno 0.25.0 # deno起動して "hello deno"起動させてみる deno > console.log('hello deno') hello deno undefined
Docker上でdinatraを使って最小構成のWebアプリを動かしてみる
せっかくなので超簡単で良いのでwebアプリを立ち上げてみたいところ。
こちらの方の記事を参考にさせていただいた。
(なお、今回webアプリを動かす上で使用する dinatra
の作者の方でもあるよう)
host側のPCにソースコードは用意する。
以下、ホスト側の作業ディレクトリにてファイルを作成。
mkdir work vim work/index.ts
dinatra
は下記の2行だけでwebアプリを起動させられるよう。
ここらへんの細かな解説は上の記事に分かりやすく書かれているので、興味ある方はぜひ読んでみることをおすすめします!
import { app, get } from 'https://denopkg.com/syumai/dinatra/mod.ts'; app(get('/hello', () => 'hello'));
再びDockerを立ち上げるが、
今回はポート8080にアクセスできるようにしていることと、workディレクトリ配下をDocker側の/tmp/shareにマウントさせるようにしている。
docker run -it --rm -v $(pwd)/work:/tmp/share -p 8080:8080 --name deno-test maxmcd/deno /bin/bash
Dockerに接続したら、下記のコマンドでwebアプリを立ち上げる。
mkdir work cp /tmp/share/index.ts work/ # Denoはファイルアクセスや、ネットワークへのアクセスに権限の許可を必要とするので、 --allow-net をつけて実行 deno --allow-net work/index.ts # 下記のようなログが流れてくる(途中省略) Compile file:///work/index.ts Download https://denopkg.com/syumai/dinatra/mod.ts Download https://raw.githubusercontent.com/syumai/dinatra/master/mod.ts Download https://raw.githubusercontent.com/syumai/dinatra/master/vendor/https/deno.land/std/http/server.ts Download https://raw.githubusercontent.com/syumai/dinatra/master/response.ts ・ ・ ・
これでホスト側のブラウザから下記のURLでアクセスすると、hello
という文字が表示されるのが確認できる。
今回触ってみたdinatra
、シンプルでわかりやすい感じなので、もうちょい色々と触ってみたいところ!