Hello Phalcon on Docker-compose

docker上でphalconを使用してhello worldを出す。

結果

st34-satoshi/hello-phalcon-docker: Hello Phalcon on Docker compose

やること

ディレクトリ構成

.
├── Dockerfile
├── LICENSE
├── README.md
├── app
├── db_data
└── docker-compose.yml

docker-compose.ymlの作成

version: "3.8"
services:
  db:
    image: mysql:5.7
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: phalcon_test
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
      TZ: 'Asia/Tokyo'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./db/data:/var/lib/mysql
      - ./db/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./db/sql:/docker-entrypoint-initdb.d
    ports:
      - 3306:3306

  app:
    container_name: hello-phalcon
    build: .
    ports:
      - "80:80"
    volumes:
      - .:/app
    depends_on:
      - db

Dockerfileの作成

FROM php:7.4

ENV PHALCON_VERSION=4.1.3

RUN apt update

# install phalcon
RUN pecl install -s psr \
    && docker-php-ext-enable psr \
    && pecl clear-cache \
    && curl -LO https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.tar.gz \
    && tar xzf v${PHALCON_VERSION}.tar.gz \
    && docker-php-ext-install -j$(nproc) ${PWD}/cphalcon-${PHALCON_VERSION}/build/php7/64bits \
    && rm -rf v${PHALCON_VERSION}.tar.gz cphalcon-${PHALCON_VERSION}

# install composer
RUN curl -sS https://getcomposer.org/installer -o /tmp/composer-setup.php \
    && php -r "if (hash_file('SHA384', '/tmp/composer-setup.php') === '$HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"\
    && php /tmp/composer-setup.php --install-dir=/usr/local/bin --filename=composer

RUN apt install git -y

RUN composer require phalcon/devtools

# for DB
RUN docker-php-ext-install pdo_mysql
RUN composer require --dev phalcon/migrations

CMD ["php", "-S", "0.0.0.0:3000", "-t", "public", ".htrouter.php"]

Phalconプロジェクトの作成

  1. docker-compose build
  2. docker-compose run app /vendor/phalcon/devtools/phalcon create-project app
  3. app/.gitignoreの作成

docker-compose.ymlの修正

phalconのappディレクトリを作成したらworking dirを修正する

working_dir: /var/www/html/app

migrationファイルの作成

mysqlでテーブルを作成する。例) create table table_name(id int);

docker-compose run app /vendor/bin/phalcon-migrations generate でapp/app/migrations/にマイグレーションファイルが作成される。

docker-compose run app /vendor/bin/phalcon-migrations runapp/app/migrations/にあるファイルからDBが作成される。

マイグレーションファイルのテンプレートを用意するために最初はmysqlで適当なテーブルを作ってからマイグレーションファイルをgenerateするのが良い。一度テンプレートを作成してからは、phpのマイグレーションファイルを編集して、runコマンドでDBを変更するのが良い。

アプリの起動

  • docker-compose up –build
  • open http://localhost:3001/

参考サイト

Comments

タイトルとURLをコピーしました