仕事で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