takaya030の備忘録

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

Docker で Amon2 の開発環境を構築

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

検証環境

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

ディレクトリ構成

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

各種設定ファイル

amon/docker-compose.yml

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

amon/data/Dockerfile

FROM busybox
LABEL maintainer "takaya030"

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

amon/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 'Amon2', '6.13';
requires 'Amon2::Lite', '0.13';

イメージのビルド

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

$ docker-compose build

Amon2 と Plack のインストー

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

$ docker-compose run --rm perlcli carton install

動作確認

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

$ docker-compose run --rm perlcli carton exec -- amon2-setup.pl --flavor=Lite myapp

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

$ docker-compose up -d

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