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プロジェクトの作成
- docker-compose build
 docker-compose run app/vendor/phalcon/devtools/phalcon create-project app- 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 run でapp/app/migrations/にあるファイルからDBが作成される。
マイグレーションファイルのテンプレートを用意するために最初はmysqlで適当なテーブルを作ってからマイグレーションファイルをgenerateするのが良い。一度テンプレートを作成してからは、phpのマイグレーションファイルを編集して、runコマンドでDBを変更するのが良い。
アプリの起動
- docker-compose up –build
 - open 
http://localhost:3001/ 
参考サイト
- composer
 - iamcommee/phalcon-docker-compose-example: This is example of phalcon with docker.
 - Phalconをdocker imageに詰め込みたいとき – Qiita
 - Phalcon Documentation – Devtools
 
  
  
  
  


Comments