Angular使ってみようと思って、指示通りにコイツを実行したらエラーが出た。
$ dc exec node bash the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
このメッセージを解決して、MSYS2上のDockerを使って、Node.jsのコンソールを実行します!
pacmanでwinptyをインストール
pacmanでwinptyをインストールします。
$ pacman -S winpty
それにしてもaptとかだと「install」なのに、pacmanは「-S」だからどうにも忘れます。
winptyを使う
winptyがインストールできたら、言われたとおりコレを使ってdocker-composeを使ってみます。
$ winpty docker-compose exec node bash root@554ff6068515:/projects# node Welcome to Node.js v12.13.0. Type ".help" for more information. > > console.log('hello node'); hello node undefined >
いけた!
一連の流れでwinpty付けても大丈夫だった
念の為docker-composeを使っていた
- up
- exec
- down
をwinptyを付けて実行してみたが、特に問題なく動作しているようでした。
$ winpty docker-compose up -d Creating network "angular-handson_default" with the default driver Creating angular-handson_node_1 ... done $ winpty docker-compose exec node bash root@baf857092972:/projects# exit exit $ winpty docker-compose down Stopping angular-handson_node_1 ... done Removing angular-handson_node_1 ... done Removing network angular-handson_default
ということで、設定からdocker-composeのaliasを修正します。
設定の編集
設定ファイルにアクセスして
$ vim /etc/profile.d/portabledevops.sh
ここのelse側の「alias dc=~」を
# portable docker toolbox if [ -d $PORTABLEPATH/dockertoolbox ]; then PATH=$PORTABLEPATH/dockertoolbox:$PATH alias dm=$PORTABLEPATH/dockertoolbox/docker-machine.exe alias dc=$PORTABLEPATH/dockertoolbox/docker-compose.exe (中略) else alias dm=/usr/local/bin/docker-machine.exe alias dc=/usr/local/bin/docker-compose.exe ←ここ denv(){ eval $(docker-machine env "$@") } export -f denv fi
このように変更します。
alias dc='winpty /usr/local/bin/docker-compose.exe'
確認
一連の流れを確認します。
$ dc up -d Creating network "angular-handson_default" with the default driver Creating angular-handson_node_1 ... done $ dc exec node bash root@65c756b49a34:/projects# exit exit $ dc down Stopping angular-handson_node_1 ... done Removing angular-handson_node_1 ... done Removing network angular-handson_default
うまく動きました!
あとがき
MSYS2xDockerでnode.jsを動かすでした!
知らないことをしていて、知らないメッセージ出ると焦りますよね……
いつものことなんですが……(笑)