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