LoginSignup
3
0

More than 5 years have passed since last update.

Composer入りDockerImage作成時スピードアップのためのTips

Posted at

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
3
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
3
0