事の経緯
- 社内サービス開発!PHPで!出来によってはサービス化も!?どんなサーバーでも動くようによろしく!
- 社長!Imagickのみだとリソースやばいです!(前回参照)
- aptパッケージなら何とか実用に耐えられる速度・・・、レンタルサーバー等は諦めよう。
- ただデプロイも簡単にしたいしお金掛けたくないし、複数アプリを1台で簡単に賄えるようにしたいし、人的依存や管理コストも問題。
- dokku-altで何とかならんのか・・・?
-
なんとかなりました。なりませんでした。 - dokku-altからdokkuに変更しました。(なんとかなりました)
追加
- 2016/04/09
- .envにtesseract-ocr用データを追記
- Aptfileにtesseract-ocr用日本語・英語ライブラリを追加
dokkuのインストール等々、参考サイト
dokku-altのインストール等々、参考サイト
- http://knowledge.sakura.ad.jp/tech/2545/
- http://freedom-man.com/blog/dokku-alternative/
- http://kray.jp/blog/dokku-alternative/
準備
// laravelインストール
composer create-project laravel/laravel sampleapp --prefer-dist
cd sampleapp
// PHPのExtensionパッケージはここで指定出来る
// 参照: https://devcenter.heroku.com/articles/php-support#extensions
vi composer.json
~略~
"require": {
~略~
"ext-imagick": "*",
~略~
}
// おまじない
echo "WAIT=5" > CHECKS
// nginx起動用のconf指定
vi Procfile
web: vendor/bin/heroku-php-nginx -C nginx_app.conf public/
// tesseract-ocr用のライブラリ場所を指定
vi .env
TESSDATA_PREFIX=/app/.apt/usr/share/tesseract-ocr
// nginxのconf(locationのみでいい?)
vi nginx_app.conf
location / {
try_files $uri @rewriteapp;
}
location @rewriteapp {
rewrite ^(.*)$ /index.php/$1 last;
}
buildpackを指定する
// .envにビルドパックのURLを指定する。今回は複数のビルドパックを使いたいのでbuildpack-multiを指定
echo "BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi" >> .env
// 利用するビルドパック群を指定する
vi .buildpacks
https://github.com/ddollar/heroku-buildpack-apt
https://github.com/aozora0000/heroku-buildpack-php-custom // 自分でカスタムしたのも指定出来る
// heroku-buildpack-aptでインストールするaptパッケージを指定
vi Aptfile
tesseract-ocr
tesseract-ocr-jpn
tesseract-ocr-eng
poppler-utils
デプロイ
あとは何時も通り、commitしてから、git remote add dokku dokku@dokku.local:sampleapp
するだけ。
aptパッケージの行方
コンテナ内に入ってwhich pdfimages
してみると、/app/.apt/usr/bin/pdfimages
にありました。
コンテナ内でパスは通っているので大丈夫だと思いますが、絶対パス指定したい場合はこの辺りを指定してあげるといいかもです。
dokku-altアプリの開発中の問題
- ubuntu14.04+dokku-alt in virtualboxだと、docker周りが安定しない
Error response from daemon: Cannot start container cb4bcaa009ff8f039215ff9d3631fe37293dbcec41b3764051b347a8f69c7450: Error getting container cb4bcaa009ff8f039215ff9d3631fe37293dbcec41b3764051b347a8f69c7450 from driver devicemapper: Error mounting '/dev/mapper/docker-8:1-268031-cb4bcaa009ff8f039215ff9d3631fe37293dbcec41b3764051b347a8f69c7450' on '/var/lib/docker/devicemapper/mnt/cb4bcaa009ff8f039215ff9d3631fe37293dbcec41b3764051b347a8f69c7450': no such file or directory
- こんなん出てデプロイ落ちる。
- 一応dokkuサーバーにログインして
dokku delete sampleapp
後に再度pushすると戻る、が手間 - dokku-altからdokkuに変更すると出なくなった!
-
vagrant halt && vagrant up
したら、dokkuユーザーからdocker繋がらない-
sudo su -
でrootに入った後、usermod -G docker dokku
すると繋がった。 - 初めてだとコケがちだと思うので公式対応して欲しいな・・・
-
- composer.lockを.gitignoreに入れると死ぬ。
- heroku/heroku-buildpack-phpのcedir-14.Dockerfileとは何だったのか・・・