驚きのニュースが飛び込んできた。Perl が約25年ぶりのメジャーバージョンアップだと。
どのくらい驚いたかって、Perl の記事がほとんどないこのブログにも書いちゃうくらい驚いた。
とりあえず記録として残しておく。
takatoh's blog – Learning programming languages.
驚きのニュースが飛び込んできた。Perl が約25年ぶりのメジャーバージョンアップだと。
どのくらい驚いたかって、Perl の記事がほとんどないこのブログにも書いちゃうくらい驚いた。
とりあえず記録として残しておく。
GitHub のリポジトリにあるドキュメントを見ながら。
まずは GitHub から clone
。
takatoh@apostrophe:~$ git clone https://github.com/nodenv/nodenv.git ~/.nodenv
オプション扱いだけど dynamic bash extension とかいうのをビルド。nodenv がスピードアップするらしい。
takatoh@apostrophe:~$ cd ~/.nodenv && src/configure && make -C src
環境変数 PATH に ~/.nodenv を追加してから、セットアップ。
takatoh@apostrophe:~$ ~/.nodenv/bin/nodenv init Load nodenv automatically by appending the following to ~/.bashrc: eval "$(nodenv init -)"
メッセージにあるとおり、.bashrc に記述を追加。終わったらシェルを起動し直す。
nodenv-doctor
スクリプトで、ちゃんとインストールできてるか確認。
takatoh@apostrophe:~$ curl -fsSL https://github.com/nodenv/nodenv-installer/raw/master/bin/nodenv-doctor | bash
OK って出たから大丈夫なんだろう。
つぎに、これもオプションみたいだけど、node-build
をインストール。
takatoh@apostrophe:~$ mkdir -p "$(nodenv root)"/plugins takatoh@apostrophe:~$ git clone https://github.com/nodenv/node-build.git "$(nodenv root)"/plugins/node-build
これで完了。
nodenv install -l
でインストール可能な Node.js のバージョン一覧が見られる。公式サイトによると 12.18.1 が最新の推奨版なので、それをインストールする。
takatoh@apostrophe:~$ nodenv install 12.18.1
nodenv global
で利用するバージョンを指定。
takatoh@apostrophe:~$ nodenv global 12.18.1
これで最新推奨版の Node.js が使えるようになる。
takatoh@apostrophe:~$ node --version v10.19.0
えっ??
takatoh@apostrophe:~$ nodenv versions system * 12.18.1 (set by /home/takatoh/.nodenv/version)
ちゃんと 12.18.1 になってるじゃないか。どういうこと?
ちょっとびっくりしたけど、なんのことはない、シェルを立ち上げ直したらできた。
takatoh@apostrophe:~$ node -v v12.18.1
おしまい。
前回の記事では、Docker のネットワークを使って通信しながら、複数のコンテナを協働させた。
基本的には前回の記事のやり方でいいんだけど、サービスの数が増えたり、規模が大きくなってコンテナの数が増えたりすると、コンテナごとにコマンドを打って起動するのは面倒だ。コンテナによって指定するオプションも異なるので、それも覚えておく必要がある。
というわけで、そういう煩雑な部分を楽にしてくれるツールがある。それが Docker Compose だ。メインマシンである apostrophe をセットアップしたときに apt でインストールしておいた。
akatoh@apostrophe:docker$ docker-compose --version docker-compose version 1.25.0, build unknown
前回記事と同じ、書籍管理 web アプリと HTTP サーバ(Nginx)という構成にする。詳しくは前回記事を参照。
前回ビルドした Docker イメージが残っているので、まずはそれを使ってコンテナを起動する設定を書いてみる。
Docker Compose は docker-compose.yml という名前のファイルを読み込んで、その設定どおりにコンテナを起動してくれる。今回書いた docker-compose.yml ファイルは次の通り。
version: '3' services: bruschetta-back: image: bruschetta:1 container_name: bruschetta-back restart: always nginx-front: image: nginx-c:1 container_name: nginx-front restart: always ports: - 8080:80
service: の下に連なっているのが、Docker Compose で起動するコンテナだ。各設定項目は見ればだいたいわかるだろうからここでは説明は省略。ただ、docker
コマンドで起動するときとは次の点が違う。
特に2つ目の挙動は docker
コマンドで起動したときと違うので注意が必要だ。最初、ここでハマった。
で、これを起動するには次のようにする。
takatoh@apostrophe:docker$ docker-compose up -d
起動中のコンテナの確認。
takatoh@apostrophe:docker$ docker-compose ps
そして停止。
takatoh@apostrophe:docker$ docker-compose stop
最後にコンテナの削除。
takatoh@apostrophe:docker$ docker-compose rm
さて、今度は Docker イメージをビルドするところからやってみる。そのためには、docker-compose.yml ファイルと同じディレクトリに、イメージ作成用のファイル一式を収めたディレクトリを置いておく。こんな感じ。
akatoh@apostrophe:docker$ ls -l 合計 12 drwxrwxr-x 3 takatoh takatoh 4096 5月 9 03:15 bruschetta -rw-rw-r-- 1 takatoh takatoh 239 6月 14 13:26 docker-compose.yml drwxrwxr-x 3 takatoh takatoh 4096 5月 14 06:19 nginx-c
そして、docker-compose.yml ファイルを次のように書き変える。
version: '3' services: bruschetta-back: build: ./bruschetta image: bruschetta:1 container_name: bruschetta-back restart: always nginx-front: build: ./nginx-c image: nginx-c:1 container_name: nginx-front restart: always ports: - 8080:80
書き変えた、というか書き足したのは、build:
の行だ。この行でイメージをビルドするための Dockerfile (とその他に必要なフィアル)を置いてあるディレクトリを指定している。
ビルドするには次のようにする。
takatoh@apostrophe:docker$ docker-compose build
イメージができたか、確認。
takatoh@apostrophe:docker$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx-c 1 c8b3966bbc31 54 seconds ago 127MB bruschetta 1 7d6607e796c2 About a minute ago 468MB nginx 1.17.10 9beeba249f3e 4 weeks ago 127MB ubuntu 20.04 1d622ef86b13 7 weeks ago 73.9MB
nginx-c:1 と bruschetta:1 がビルドされたイメージ。下の2つは元になったイメージ(Docker Hub から取ってきたもの)だ。
じゃあ、これを起動してみよう。
takatoh@apostrophe:docker$ docker-compose up -d
OK。ブラウザからアクセスしてみて、期待通りに動いているのを確認できた。