docker-composeでdenoの環境を作る
はじめに
お久しぶりです、からすさんです。タイトル通りdocker-composeでdenoを試すための環境を作る記事です。本記事の環境は次の通りです。
Ubuntu 20.04.3 LTS (Focal Fossa) Docker version 20.10.8 docker-compose version 1.26.0
docker-compose
次のようにdocker-compose.yml
を作成します。
version: '3' services: app: image: denoland/deno:1.15.1 ports: - "8000:8000" volumes: - .:/app command: /bin/bash tty: true
command: /bin/bash
とtty: true
はコンテナを起動させ続けるために記述しています。
コンテナ起動
次のコマンドで起動させます。
$ docker-compose up -d
コンテナが実行中であるかを次で確認します。
$ docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------------------------- deno-docker_app_1 /tini -- docker-entrypoint ... Up 0.0.0.0:8000->8000/tcp,:::8000->8000/tcp
コンテナ内でdenoを試す
先ほど起動させたコンテナ内でコマンド実行を行うために、次のコマンドを実行させます。
$ docker-compose exec app bash root@xxx:/#
コンテナ内でdeno --version
と実行させて、次のような出力がされ、denoの環境作りが終えました。
root@xxx:/# deno --version deno 1.15.1 (release, x86_64-unknown-linux-gnu) v8 9.5.172.19 typescript 4.4.2
備考
tty
ttyは、UNIXで同名のコマンドがあり、「標準入出力となっている端末デバイスの名前を表示する」コマンドみたいです。
$ tty /dev/pts/1
同じ計算機上で複数ターミナルを起動しているときに/dev/pts/1
と/dev/pts/2
があった時に/dev/pts/1
側のターミナル上で
$ echo "hello" > /dev/pts/2
とコマンドを実行させると/dev/pts/2
側のターミナル上にhello
と出力させることができるみたいです。
Dockerにおけるtty
run — Docker-docs-ja 19.03 ドキュメント
によると
疑似ターミナル (pseudo-TTY) を割り当て
だそうです。
tty: ture
やcommand: /bin/bash
docker-compose.yml
内でtty: ture
やcommand: /bin/bash
の処理を行わなければ、コンテナを起動させた時に、コンテナがすぐに終了してしまいます。これは、コンテナを起動させ続けるためのプロセスが存在しないため、コンテナが正常終了してしまうからです。そのため、今回はコンテナを動かし続けるため、ターミナル上でbashを実行させプロセスが無くならないようにしています。
おわりに
間違った内容等があったら、こっそり教えてください!