LoginSignup
2
0

More than 5 years have passed since last update.

LaradockでPhalconに入門する

Posted at

TL;DR

Phalcon触ってみたかったので、Laradockで環境作ってWebアプリの雛形作ってみた

対象

  • Laravelとか知ってるけどPhalconは触ったことないPHPer(私)
  • サクッとPhalconお触りしてみたい人

準備

  • macOS 10.14.5
  • docker 18.09.2

ディレクトリ構成

以下のようになる想定です

/path/to
├── phalcon-sample
└── laradock

phalcon-sampleのところはプロジェクト名等で適宜読み替えてください

手順

Laradockworkspaceコンテナ経由でPhalconプロジェクトを作成します

Laradock導入

$ cd /path/to
$ git clone https://github.com/laradock/laradock.git
Cloning into 'laradock'...
...
Resolving deltas: 100% (4755/4755), done.

Laradockについて詳細は割愛するので、必要な方はこのへん見てください

.env作成

$ cd /path/to/laradock
$ cp env-example .env
$ vi .env
$ diff -u env-example .env
...
-WORKSPACE_INSTALL_PHALCON=false
+WORKSPACE_INSTALL_PHALCON=true
...
-PHP_FPM_INSTALL_PHALCON=false
+PHP_FPM_INSTALL_PHALCON=true
...
-MYSQL_VERSION=latest
+MYSQL_VERSION=5.7

.envの変更は上記3箇所です

MYSQL_VERSIONについては本題とあまり関係ないのでこのへん参考に「ふーん」ぐらいで大丈夫です

dockerコンテナ起動

workspaceコンテナのみ指定して起動します

$ docker-compose up -d workspace
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1        ... done
$ docker-compose ps
           Name                      Command          State          Ports        
----------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh   Up      2375/tcp            
laradock_workspace_1          /sbin/my_init           Up      0.0.0.0:2222->22/tcp

phalcon/devtoolsのインストールとPhalconプロジェクト作成

起動したworkspaceコンテナ内でphalcon-devtoolsをインストールします

phalcon-devtoolsPhalcon公式から提供されている便利スクリプト集らしいです

Laravelで言うところのartisanみたいなやつでしょうか?(よくわかってない)

公式の手順とはちょっと異なりますが、一度コンテナ内のグローバルにインストールしてプロジェクト作成します(※ 後でプロジェクト内でインストールし直します)

$ docker-compose exec --user=laradock workspace bash
# ここから コンテナ内での作業です
$ composer global require phalcon/devtools
Changed current directory to /home/laradock/.composer
Using version ^3.4 for phalcon/devtools
./composer.json has been updated
...
Writing lock file
Generating autoload files
$ php ~/.composer/vendor/bin/phalcon.php project phalcon-sample

Phalcon DevTools (3.4.0)


  Success: Controller "index" was successfully created.  

/var/www/phalcon-sample/app/controllers/IndexController.php

  Success: Project 'phalcon-sample' was successfully created.
Please choose a password and username to use Database connection.Used default:'root' without password.  

$ exit
exit
# ここまで コンテナ内での作業です
$ docker-compose down
Stopping laradock_workspace_1        ... done
Stopping laradock_docker-in-docker_1 ... done
Removing laradock_workspace_1        ... done
Removing laradock_docker-in-docker_1 ... done
Removing network laradock_frontend
Removing network laradock_backend
Removing network laradock_default

phalcon-devtoolsでプロジェクト作成したら、コンテナは一度抜けて破棄します

ローカル動作確認

/path/to/phalcon-sampleディレクトリがホスト側にも出来上がっているはずなので、Laradockのマウント設定を少し変更します

$ vi .env
$ diff -u env-example .env
...
-APP_CODE_PATH_HOST=../
+APP_CODE_PATH_HOST=../phalcon-sample
...
-WORKSPACE_INSTALL_PHALCON=false
+WORKSPACE_INSTALL_PHALCON=true
...
-PHP_FPM_INSTALL_PHALCON=false
+PHP_FPM_INSTALL_PHALCON=true
...
-MYSQL_VERSION=latest
+MYSQL_VERSION=5.7

先ほどの3箇所に加え、APP_CODE_PATH_HOSTを変更しています

デフォルトでは/path/toをコンテナにマウントしていたのに対し、/path/to/phalcon-sampleをマウントするようにしています

.envを変更したら、今度はworkspace以外にnginxmysqlも一緒に起動します

$ docker-compose up -d workspace nginx mysql
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating laradock_mysql_1            ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1        ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

無事に立ち上がったら、この時点でlocalhostで動作確認できると思います

screenshot.png

phalcon-devtoolsはこの後も使うと思うので、プロジェクト内に改めてインストールしておきます

$ docker-compose exec --user=laradock workspace bash
# ここから コンテナ内での作業です
$ composer require --dev phalcon/devtools
Using version ^3.4 for phalcon/devtools
./composer.json has been created
...
Writing lock file
Generating autoload files
$ exit
exit

最終的に中身はこんな感じになっていると思います

$ ll phalcon-sample/
total 72
drwxr-xr-x   8 user  group    256  6 21 12:22 app/
drwxr-xr-x   2 user  group     64  6 21 12:22 cache/
-rw-r--r--   1 user  group     66  6 21 12:33 composer.json
-rw-r--r--   1 user  group  26968  6 21 12:33 composer.lock
-rw-r--r--   1 user  group    123  6 21 12:22 index.html
drwxr-xr-x   9 user  group    288  6 21 12:22 public/
drwxr-xr-x  12 user  group    384  6 21 12:33 vendor/

まとめ

phalcon-devtools周りでちょっとぐだつきましたが、とりあえず最終形はきれいな形に収まったと思います…

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0