LoginSignup
2
0

laradockでpuppeteer

Last updated at Posted at 2019-12-25

puphpeteerというライブラリがあるが、ちょっとハマったのでメモする。
puphpeteerを使う前にそもそもpuppeteerが動くようにする必要があると思われる。
puppeteerとpuphpeteerってほとんど同じ名前でややこしい。

jsで動かすのがpuppeteer
phpで動かすのがpuphpeteer

いろんな記事みたが、ここが一番役にたった。

Laradockでnodeとsockets_extが動かない, 初心者がLaradockでLaravel開発する準備

結論

何個かの対応がいる。
phpのsockets拡張がない。
php-fpm, workspaceにnode, chrome, puppeteerを入れる。

作業

1.sockets拡張

sockets拡張をONにするには
php-fpmのDockerfileとlaradockの.envを変更する。
AMQPぽいところをtrueにしていく。

.env
ここをtrueにする。
ARG INSTALL_AMQP=true

2.dockerにnode, chrome, puppeteerを入れる

これらのdockerは完全ではない。バージョンが入ってないところがあるので、時間が経つと取得されるモジュールが変わる。んでエラーになることが想定される。
2019/12/26現在は動いてる。

workspaceのDockerfileに追加する。

# Puppeteer

RUN apt-get update
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs
RUN apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
RUN apt-get install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
RUN npm install --global --unsafe-perm puppeteer
RUN chmod -R o+rx /home/laradock/.nvm/versions/node/v13.5.0/lib/node_modules/puppeteer/.local-chromium

php-fpmのDockerfileに追加する。

# install puppeteer
RUN rm -rf /var/lib/apt/lists/*
RUN curl -sL https://deb.nodesource.com/setup_12.x | bash -
RUN apt-get install -y nodejs

RUN apt-get install -y nodejs gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

#RUN npm install --global --unsafe-perm puppeteer
#RUN chmod -R o+rx /usr/lib/node_modules/puppeteer/.local-chromium


RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/*

RUN npm i puppeteer \
    # Add user so we don't need --no-sandbox.
    # same layer as npm install to keep re-chowned files from using up several hundred MBs more space
    && groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
    && mkdir -p /home/pptruser/Downloads \
    && chown -R pptruser:pptruser /home/pptruser \
    && chown -R pptruser:pptruser /var/www/html/node_modules/

USER pptruser

CMD ["google-chrome-unstable"]

再度ビルドする。

docker-compose build --no-cache php-fpm workspace

こんな感じでdocker upし直せば動いた。

docker-compose down
docker-compose up -d nginx mysql phpmyadmin redis workspace

その他メモ

php.iniの場所を探したいとき

php -i | grep php.ini

phpのバージョンによって少しphp.iniの場所が違ったりもする。

Laradockでphpのバージョンを変更する

AF_INETとかいうエラーも出てた。

socketsの拡張をtrueにしてdocker-composeをビルドした。

Notice: Use of undefined constant AF_INET - assumed 'AF_INET'

font系のエラーも出てた

No package ttf-freefont in Ubuntu 18.04

参考

Laradock環境でnodeにアクセスできない
add php sockets support
php-ext-enable imagick ;fi' returned a non-zero code: 100
PHP で使用されている php.ini ファイルを特定する方法

Better php PDF generation — with Puppeteer in Laradock

2
0
1

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