1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Docker で Mojolicious 9 を動かす

Posted at

Docker を使った Mojolicious 9 開発環境の構築手順の備忘録

検証環境

Windows10 Home Edition (version 21H2)
VirtualBox 6.1.38
vagrant 2.3.1

# Docker Host OS
ubuntu 20.04.3 LTS (Focal Fossa)

Docker version 20.10.8, build 3967b7d
docker-compose version 1.29.2, build 5becea4c

ディレクトリ構成

mojo
├── Dockerfile
├── app
│   └── cpanfile
└── docker-compose.yml

各種設定ファイル

mojobase で perl の設定などのスタティックな部分のイメージを作成し、 mojoapp で変更の多いソースコードを追加するかたちをとることでイメージのビルドが最小限になるようにしています

Dockerfile
FROM perl:5.36.0 AS mojobase
LABEL maintainer "takaya030"

WORKDIR /tmp

RUN apt-get update -y && \
    apt-get clean && \
    rm -fr /var/lib/apt/lists/*

# install carton
RUN cpanm Carton

# create appuser
RUN groupadd -g 1000 appuser && \
	useradd -d /home/appuser -m -s /bin/bash -u 1000 -g 1000 appuser

USER 1000

RUN mkdir -p /home/appuser/app
WORKDIR /home/appuser/app

CMD ["true"]


FROM mojobase AS mojoapp
LABEL maintainer "takaya030"

COPY ./app /home/appuser/app

EXPOSE 8080

CMD ["carton","exec","plackup","-p","8080","myapp.pl"]
docker-compose.yml
version: "3.4"
services:
  base: 
    build:
      context: .
      dockerfile: ./Dockerfile
      target: mojobase
    image: "takaya030/mojobase"
    volumes:
      - ./app:/home/appuser/app
  app: 
    build:
      context: .
      dockerfile: ./Dockerfile
      target: mojoapp
    image: "takaya030/mojoapp"
    volumes:
      - ./app:/home/appuser/app
    ports: 
      - "8080:8080"
app/cpanfile
requires 'Plack', '1.0050';
requires 'Mojolicious', '9.27';

mojobase イメージのビルド

最初に mojobase のイメージを作成します

$ cd mojo
$ docker-compose build base

Mojolicious と Plack のインストール

mojobase イメージを使って app フォルダに Mojolicious と Plack をインストールします

$ docker-compose run --rm base carton install

Mojolicious のアプリケーション作成

以下のコマンドでサンプルアプリケーションを作成します

$ docker-compose run --rm base carton exec -- mojo generate lite_app myapp.pl

mojoapp イメージのビルド

サンプルアプリケーションを動作させるためのイメージをビルドします

$ docker-compose build app

動作確認

以下のコマンドで Plack サーバーが起動します

$ docker-compose up

web ブラウザで http://Dockerホスト:8080 にアクセスして以下の画面が表示されれば成功です

welcom_to_mojo.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?