sironekotoroの日記

Perl で楽をしたい

Docker実践活用ガイド Chapter 10 DockerとJavaScriptでウェブサービスを作る(簡易オンラインジャッジシステム)

book.mynavi.jp

ずっと気になっていたDockerなのですが、本屋で見かけてこれなら(うちみたいな初級者でも)理解できそう、ということで購入。
厚みはある本なのですが256pとIT技術書にしては少なめ。
細かい仕様よりも、とりあえず動かしてみよう!ってところが気に入りました。

AmazonKindle Unlimited対象なのも良い。

Docker実戦活用ガイド

Docker実戦活用ガイド

すでに業務とかで触っている人向けではないですね。
この本を参考書にハンズオン形式とかやるといいかもしれないなぁ、と思いましたわ。

蒙が啓かれる

うちはDockerを「本番環境をそのまま手元に再現できる、開発環境のツール」としか思ってなかったんですね。
でも、この本に掲載されている「任意のコードをDocker環境上で動かし、その結果をホストに持ってくる」ってのに衝撃を受けましたわ。
それってつまり、普通のソフトと同じように使えるということ。すごい。

2つの不満点・・・

Chapter 8 「複数のDocker を使う(Docker MAchine, Docker Swarm, Docker Compose)」

最後のDocker Composeで docker-compose scale web=3 でスケールアップできなかったこと。
前節のDocker Swarm のところから続けて試してたんだけど、暗黙の何かの前提条件があったのか、うちの見落としか、スケールアップすることができず。

動かせなかったDocker Composeは次のDocker本で改めて学習するつもり。

コードがWeb上にない!

目gerpで目を酷使してつらい。
そんで、いまからこの2016年の本を読む人がいるかどうかはともかく、うちはきっと戻ってくるだろう、ってことで10章のコードを載っけときます。

Docker実践活用ガイド Chapter 10 DockerとJavaScriptでウェブサービスを作る(簡易オンラインジャッジシステム) — Bitbucket

本に書いてあるものを少し拡張して、Perlのコードも試せるようにしています。Perl好きなんだもん仕方ないね。
Perl追加したことと、エディタの自動整形の影響で、本に掲載されている行数と異なってますのでご注意を(主に将来の自分へ)

お手軽に動かしてみたい!という将来の自分へ

環境

  • macOS 10.12.6

  • Docker for Mac で実行

      $ docker version
      Client:
       Version:           18.06.1-ce
       API version:       1.38
       Go version:        go1.10.3
       Git commit:        e68fc7a
       Built:             Tue Aug 21 17:21:31 2018
       OS/Arch:           darwin/amd64
       Experimental:      false
    
      Server:
       Engine:
        Version:          18.06.1-ce
        API version:      1.38 (minimum version 1.12)
        Go version:       go1.10.3
        Git commit:       e68fc7a
        Built:            Tue Aug 21 17:29:02 2018
        OS/Arch:          linux/amd64
        Experimental:     true
    

準備

  • コード実行環境用コンテナを用意する

      # イメージ作成時に ubuntu-devの名前をつける
      # docker build -t ubuntu-dev .
      FROM ubuntu
      RUN apt-get update
      RUN apt-get install -y perl
      RUN apt-get install -y ruby
      RUN apt-get install -y python
      RUN apt-get install -y clang
      RUN apt-get install -y time
      RUN apt-get install -y binutils
    
  • コード実行環境のフロントエンド用コンテナをDocker Hubから持ってくる

    https://hub.docker.com/u/sironekotoro/

      docker pull sironekotoro/code-runner
    
  • イメージサイズはこんな感じ。大きい

      docker images
      REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
      ubuntu-dev                 latest              5cbc5fafea4f        17 minutes ago      674MB
      sironekotoro/code-runner   latest              73722453f41f        About an hour ago   678MB
    

起動

docker run -v /usr/local/bin/docker:/usr/local/bin/docker -v /var/run/docker.sock:/var/run/docker.sock -p 3000:3000 --rm sironekotoro/code-runner
  • http://localhost:3000 にブラウザでアクセスする

遊ぶ

後片付け

    docker stop $(docker ps -a -q)
    docker rmi ubuntu-dev sironekotoro/code-runner