0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DockerでDenoを実行する

Last updated at Posted at 2020-09-05

単純にDocker上でDenoを実行するだけなら、下記のコマンドで実行される。

$ docker run hayd/alpine-deno

でもそれだけだと、下記のように、denoが起動して終わりである。実行はできているが、屁理屈である。

Download https://deno.land/std/examples/welcome.ts
Warning Implicitly using latest version (0.68.0) for https://deno.land/std/examples/welcome.ts
Download https://deno.land/std@0.68.0/examples/welcome.ts
Check https://deno.land/std@0.68.0/examples/welcome.ts
Welcome to Deno 🦕

コマンドライン上でコードを書いて実行したい場合は下記でREPLが実行される。

$ docker run hayd/alpine-deno repl

一見これでよさそうだが、Dockerの中で標準入力を受け付けるだけで、Dockerの外で標準入力を受け付けてくれない。
そこで、下記のように-tオプションをつけて、自分の使っているコマンドライン上の標準入力を受け付ける。

$ docker run -t hayd/alpine-deno repl

これでいけそうであるが、下記のように怒られて、入力できそうなのにできない。

Deno 1.3.3
exit using ctrl+d or close()
WARN RS - rustyline:718 - cannot read initial cursor location
>

-iオプションで標準入力をアタッチしないといけないらしい。正直仕組みはよくわからない。

$ docker run -i -t hayd/alpine-deno repl

これで、console.logなどが試せる。

Deno 1.3.3
exit using ctrl+d or close()
> console.log('hell word')
hell word
undefined
>

main.tsなどのファイルを実行したい場合は、Dockerfileを作ると便利。

FROM hayd/alpine-deno
WORKDIR /app
COPY . .
CMD [ "run", "--allow-net", "src/main.ts" ]

Dockerfileがあるフォルダの中でsrc/main.tsを作る。

main.ts
import { serve } from "https://deno.land/std@0.68.0/http/server.ts";
const s = serve({ port: 8080 });
console.log("http://localhost:8080/");
for await (const req of s) {
  req.respond({ body: "<h1>Hell Word</h1>\n" });
}

Dockerfileがある場所で下記を実行する。

$ docker build -t deno .

-tで指定することでここではdenoという名前(タグ名)のイメージが作成される。
あとは下記のコマンドでmain.tsを実行できる。

$ docker run -p 8080:8080 deno

-pでDockerの中の8080番ポートを、自分が今使っているローカル環境の8080番ポートに紐づけることで、ローカル環境のブラウザで
http://localhost:8080/
からアクセスできるようになる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?