CircleCIの実行時間を短くするために、DockerImageの作成を行ったのですが、
どうせなら composer install
も早くしたいと思って @Hiraku
さんのプラグイン等を導入しています。
数十秒程度改善される場合もあるのでおすすめです。
なお、Laravelだと依存関係のパッケージが多いため10倍くらい早くなるらしいです。
以下、Dockerfileです。
mshimao/php7.1-apache-postgres-composer-php-extensionsで公開してます。
FROM php:7.1-apache
RUN \
apt-get update \
&& apt-get -y install git unzip zlib1g-dev libpq-dev libicu-dev libpng12-0 libpng-dev \
postgresql netcat
# extensions install
RUN \
docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
&& docker-php-ext-install pdo pgsql pdo_pgsql zip intl gd mbstring
# composer install
RUN \
curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer
# make composer fast in japan
RUN composer config -g repositories.packagist composer https://packagist.jp && \
composer global require hirak/prestissimo
ENV LANG ja_JP.UTF-8
以下でcomposerの参照先をpackagist.jpに変更しています。
composer config -g repositories.packagist composer https://packagist.jp
以下でcomposerを並列処理にするhirak/prestissimoを入れてます。
composer global require hirak/prestissimo
おまけ1
Dockerhubへのpushは以下の3コマンドで終わるのでカンタンです
docker login
docker build -t username/hoge ./
docker push username/hoge
おまけ2
Ansibleも作ったので貼ります。
---
# install composer
- name: check composer
stat: path=/usr/local/bin/composer
register: composer_bin
tags: composer
- block:
- name: download composer
get_url:
url: https://getcomposer.org/installer
dest: /tmp/installer
- name: install composer
shell: cat /tmp/installer | php -- --install-dir=/usr/local/bin
- name: rename composer.phar to composer
shell: mv /usr/local/bin/composer.phar /usr/local/bin/composer
- name: make composer executable
file:
path: /usr/local/bin/composer
mode: a+x
state: file
- name: composer speed up(1/2)
shell: /usr/local/bin/composer config -g repositories.packagist composer https://packagist.jp
- name: composer speed up(2/2)
shell: /usr/local/bin/composer global require hirak/prestissimo
when: not composer_bin.stat.exists
tags: composer