LoginSignup
0
0

More than 3 years have passed since last update.

Mac上にLaradockを使ってPHP7.2-Phalcon開発環境を整える

Last updated at Posted at 2019-05-16

仕事でPhalcon(API用)とLaravel(管理ツール用)を使うことになったので簡単に構築できるものを探したところLaradockはLaravelだけじゃなくPhalconもCakePHPも対応できるということなので触ってみた備忘です。

confなどをvolums設定するのは後回しにしています。

# 1.Laradockをインストール

作業フォルダを作成
~ $ mkdir ~/projectZ
~ $ cd ~/projectZ

Laradockをgit clone
~/projectZ $ git clone https://github.com/LaraDock/laradock.git
~/projectZ $ cd laradock

# 2.設定ファイルを編集する

.envファイルをサンプルからコピー
~/projectZ/laradock $ cp env-example .env

.envファイルの必要な部分だけ書き換える
~/projectZ/laradock $ vi .env
            - PHP_VERSION=7.1
            + PHP_VERSION=7.2
            - WORKSPACE_INSTALL_GMP=false
            + WORKSPACE_INSTALL_GMP=true
            - WORKSPACE_INSTALL_PHALCON=false
            + WORKSPACE_INSTALL_PHALCON=true
            - PHP_FPM_INSTALL_GMP=false
            + PHP_FPM_INSTALL_GMP=true
            - PHP_FPM_INSTALL_PHALCON=false
            + PHP_FPM_INSTALL_PHALCON=true
            + DB_HOST=mysql
            + REDIS_HOST=redis

MySQLは8.0系にはしないので5.7に変更
~/projectZ/laradock $ vi mysql/Dockerfile
            - FROM mysql:latest // このままだと8.0が入る
            + FROM mysql:5.7
  • 本当はPHP7.3を入れたかったのですが、2019/05/15時点ではphalcon-devtoolsがphp73-phalconに対応していないようなので断念しました

# 3.コンテナ起動

~/projectZ/laradock $ docker-compose up -d nginx mysql redis
 Starting laradock_nginx_1            ... done
 Starting laradock_php-fpm_1          ... done
 Starting laradock_workspace_1        ... done
 Starting laradock_mysql_1            ... done
 Starting laradock_docker-in-docker_1 ... done
 Starting laradock_redis_1            ... done

~/projectZ/laradock $ docker-compose ps
 CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS                  PORTS                                      NAMES
 6a28ccf5e878        laradock_nginx       "/bin/bash /opt/star…"   1 minutes ago      Up 1 minutes           0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
 0b5a50eddb69        laradock_php-fpm     "docker-php-entrypoi…"   1 minutes ago      Up 1 minutes           9000/tcp                                   laradock_php-fpm_1
 9b20fc6f9ffa        laradock_workspace   "/sbin/my_init"          1 minutes ago      Up 1 minutes           0.0.0.0:2222->22/tcp                       laradock_workspace_1
 a6112275c62f        laradock_mysql       "docker-entrypoint.s…"   1 minutes ago      Up 1 minutes           0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
 9e7c645933bc        docker:dind          "dockerd-entrypoint.…"   1 minutes ago      Up 1 minutes           2375/tcp                                   laradock_docker-in-docker_1
 f5ff8f4da0c7        laradock_redis       "docker-entrypoint.s…"   1 minutes ago      Up 1 minutes           0.0.0.0:6379->6379/tcp                     laradock_redis_1
  • 試しにSequelProでlocalhost:3306にアクセスしたところ、正常にMySQLコンテナのデータベースにアクセスできました

# 4.Phalconアプリケーション作成

Laradock作業コンテナ(workspace)に入る
~/projectZ/laradock $ docker-compose exec --user=laradock workspace bash
>>>>ここからコンテナ内

 phalcon-devtoolsをインストール
 laradock@xxxxx:/var/www $ composer create-project phalcon/devtools phalcon-devtools

 phalconアプリケーションを作成
 laradock@xxxxx:/var/www $ php phalcon-devtools/phalcon.php create-project phalcon-appli
 laradock@xxxxx:/var/www $ exit
>>>>ここまでコンテナ

コンテナ内から作成したアプリケーションがMacのprojectZに存在することを確認
~/projectZ/laradock $ ls -la ../
total 32
drwxr-xr-x  11 my-user  staff   352  5 16 12:45 .
drwxr-xr-x+ 74 my-user  staff  2368  5 16 15:01 ..
-rw-r--r--@  1 my-user  staff  6148  5 16 11:50 .DS_Store
drwxr-xr-x  22 my-user  staff   704  5 15 14:40 phalcon-appli
drwxr-xr-x  27 my-user  staff   864  5 15 17:35 phalcon-devtools
drwxr-xr-x  77 my-user  staff  2464  5 15 14:31 laradock
  • .envに記載されているAPP_CODE_PATH_HOST=../を変更すれば生成されるアプリケーションの保存先を変更できます
  • .envに記載されているDATA_PATH_HOST=~/.laradock/dataにはコンテナ内の永続化データが格納されます
    • 今回は~/.laradock/data/mysql~/.laradock/data/redisが保存されていると思います

# 5.PhalconアプリケーションをNginxに設定する

Nginxコンテナに入る
~/projectZ/laradock $ docker-compose exec nginx bash

>>>>ここからコンテナ内
 ホストのvolumeが共有されていることを確認
 bash-4.4# ls -la /var/www
 total 4
 drwxr-xr-x    5 root     root           160 May 15 04:23 .
 drwxr-xr-x    1 root     root          4096 May 15 04:19 ..
 drwxr-xr-x   25 www-data www-data       704 May 15 05:40 phalcon-appli
 drwxr-xr-x   27 root     root           864 May 15 05:35 phalcon-devtools
 drwxr-xr-x   75 root     root          2464 May 15 05:31 laradock

 phalcon-appli用nginx.confを追加する
 bash-4.4# cp /etc/nginx/sites-available/app.conf.example /etc/nginx/sites-available/phalcon-appli.conf
 bash-4.4# vi /etc/nginx/sites-available/phalcon-appli.conf
           - server_name app.test;
           + server_name phalcon-appli;
           - root /var/www/app;
           + root /var/www/phalcon-appli/public;
 bash-4.4# exit
>>>>ここまでコンテナ

# 6.コンテナ再起動

全コンテナを再起動
~/projectZ/laradock $ docker-compose restart
 Restarting laradock_nginx_1            ... done
 Restarting laradock_php-fpm_1          ... done
 Restarting laradock_workspace_1        ... done
 Restarting laradock_mysql_1            ... done
 Restarting laradock_docker-in-docker_1 ... done
 Restarting laradock_redis_1            ... done

# 7.Macのhosts設定を変更

~/projectZ/laradock $ sudo vi /etc/hosts
                     + 127.0.0.1 phalcon-appli

# 8.ブラウザアクセスを確認

http://phalcon-appli/
  • こうしておくと、cake-appliなどを追加して共存したい時に、5~7の設定をすればhttp://phalcon-appli/http://cake-appli/でアクセスできます

# 9.感想

  • Laradockは大体のメジャーな機能が入っているので、開発環境をパッと作って動かすにはとても便利
  • confファイルとかマウントするともっと簡単になるのでカスタマイズしてgitに上げておきたい
  • EC2上のAmazonLinuxでも全く同じ手順で動かせたので社内環境にも使えそう
    • セットアップ時はスペックが欲しいのでt2.large
    • セットアップし終わったらt2.smallで動くのがありがたい
    • 本番環境とステージング環境はチューニングしないとダメなのでそれは別途...

# 10.備考

  • workspaceコンテナでcomposer create-project --prefer-dist cakephp/app cake-appliでCakePHPをセットアップすることも可能
  • 他にも色々なサービスをコンテナとしてセットアップ可能
    • Percona/MSSQL/MariaDB/PostgreSQL(データベースエンジン)
    • Minio(S3互換ストレージ)
    • elasticsearch(検索&分析エンジン)
    • kibana(データビジュアライズ)
    • beanstalk(キュー)
    • Selenium(テストツール)
    • Varnish/HAPROXY(プロキシ)
    • grafana(負荷監視)
    • blackfire(プロファイル)
    • ZooKeeper(分散処理)
    • gitlab(バージョン管理)...etc
0
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
0
0