久々に perl で遊んでみました。
構成
mojolicious-app/ │── Dockerfile │── app.pl # Mojolicious::Lite アプリ │── cpanfile # Perlモジュールの依存関係
コード
app.pl
#!/usr/bin/env perl use Mojolicious::Lite; get '/' => sub { my $c = shift; $c->render(text => 'Hello, Mojolicious in Docker!'); }; app->start;
依存関係 (cpanfile)
cpanfile を作成し、必要なモジュールを定義します。
requires 'Mojolicious';
Dockerfile
Dockerfile を作成します。
FROM perl:latest RUN apt-get update && apt-get install -y \ curl \ && rm -rf /var/lib/apt/lists/* RUN cpanm --notest Carton WORKDIR /app COPY cpanfile cpanfile COPY app.pl app.pl RUN carton install CMD ["carton", "exec", "perl", "app.pl", "daemon", "-l", "http://*:3000"]
動かし方
Docker イメージのビルド
Dockerfile のあるディレクトリで以下のコマンドを実行します。
docker build -t mojolicious-app .
コンテナの起動
ビルドしたイメージを実行します。
docker run -p 3000:3000 mojolicious-app
動作確認
ブラウザで以下のURLにアクセスします。
http://localhost:3000/
または curl コマンドで確認します。
curl http://localhost:3000/