ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【perl】Mojolicious を使ってみる

久々に 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/