takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Docker で Mojolicious の開発環境を構築

docker-compose を使った Mojolicious の開発環境構築の手順メモ

検証環境

Windows10 Home Edition
VirtualBox 5.1.20
Docker version 17.05.0-ce, build 89658be
docker-compose version 1.6.2, build 4d72027

ディレクトリ構成

+---mojo
|   |   docker-compose.yml
|   |   
|   +---data
|   |       Dockerfile
|   |       
|   +---perlcli
|           Dockerfile
|            
+---logs
|    
+---www
        cpanfile

各種設定ファイル

mojo/docker-compose.yml

version: "2"
services:
  data:
    build: ./data
    volumes:
      - ../:/data
  perlcli:
    build: ./perlcli
    volumes_from:
      - data
  plack:
    image: mojo_perlcli
    volumes_from:
      - data
    ports:
      - "3000:3000"
    command: ["carton","exec","plackup","-p","3000","myapp.pl"]
    depends_on:
      - perlcli

mojo/data/Dockerfile

FROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data
VOLUME ["/data"]
CMD ["true"]

mojo/perlcli/Dockerfile

FROM perl:5.24.1
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 docker user
RUN useradd -d /home/docker -m -s /bin/bash -u 1000 -g 50 docker

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

CMD ["perl","-v"]

www/cpanfile

requires 'Plack', '1.0044';
requires 'Mojolicious', '7.31';

イメージのビルド

mojo ディレクトリに移動後、以下のコマンドでイメージをビルドします。

$ docker-compose build

Mojolicious と Plack のインストー

イメージビルド後、以下のコマンドで Mojolicious と Plack をインストールします。

$ docker-compose run --rm perlcli carton install

動作確認

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

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

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

$ docker-compose up -d

web ブラウザで http://192.168.99.100:3000 にアクセスして以下の画面が表示されれば成功です。
f:id:takaya030:20170530233327p:plain