Perl6のCroを題材にDockerを勉強する(始めの一歩)

始めに

仕事でDockerを使うことになったのだが、何から勉強していいのか分からないし、 リファレンスやドキュメントを読んでいるだけではつまらない。

そういえば、先日Perl6のCroの入門をしている際にDockerfileを生成を生成していた。とりあえずこれを読んでみようと思った。

Dockerfile

  1. FROM croservices/cro-http:0.8.1
  2. RUN mkdir /app
  3. COPY . /app
  4. WORKDIR /app
  5. RUN zef install --deps-only . && perl6 -c -Ilib service.p6
  6. ENV HELLO_PORT="10000" HELLO_HOST="0.0.0.0"
  7. EXPOSE 10000
  8. CMD perl6 -Ilib service.p6

1. FROM croservices/cro-http:0.8.1

  • FROM: ベースイメージの指定
  • UbuntuMySQLなど
  • コロンの後ろにversionを指定できる

2. RUN mkdir /app

3. COPY . /app

  • COPY: ファイルやディレクトリをコンテナ内にコピーする
  • URLの指定不可、自動解凍もしない
    • ADD: 指定したファイル・ディレクトリをコンテナ内にコピーする URLの指定が可能、tarファイルは自動解凍する。

4. WORKDIR /app

5. RUN zef install --deps-only . && perl6 -c -Ilib service.p6

  • zef install --deps-only . : 要求されたディストリビュージョンの依存関係チェーンのみをインストール
  • perl6 -c -Ilib service.p6 : -cオプションでシンタックスをチェックする

6. ENV HELLO_PORT="10000" HELLO_HOST="0.0.0.0"

7. EXPOSE 10000

  • EXPOSE : 外部に公開するポートを指定する。

8. CMD perl6 -Ilib service.p6

  • CMD : Docker run時に実行されるコマンド

終わりに

  • -Ilibが不明
  • 調べる時間が半分くらいPerl6にとられた。
  • 興味のあることをするのがいいね。