docker、puppeteer共に初めてでしたが、結構あっさりできました。
でもすぐ忘れそうなのでメモ残しておきます。
私の使用環境はMacです。
#DockerをMacにインストール
公式サイトからDocker for Macをインストールします。
https://hub.docker.com/editions/community/docker-ce-desktop-mac

青い[Get Docker]というボタンを押すと、DockerhubのSignUpを求められます。
別にDockerHubは使う予定なかったのでID作りたくなかったのですが、回避方法が見つからずSignUpしました。
言われるがままに進んでいくと、インストールし起動できます。
インストールの確認は、定番のversion確認を行いました。
mbp:~ kuniatsu$ docker version
Client: Docker Engine - Community
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:47:43 2018
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:55:00 2018
OS/Arch: linux/amd64
Experimental: false
mbp:~ kuniatsu$
#環境に入り作業する
Dockerは用意されているimageをbuildしてcontainerを作成します。
最初何言ってるか自分も最初は何言ってるか全くわからなかったのですが、やってくうちにそこそこつかめました。
おかしいと突っ込まれそうですが、
・Dockerのimageはプログラムで言う所のclass
・Dockerのcontainerはプログラムで言う所のinstance
のようなイメージです。(だと思ってます)
$ docker pull node:8.4
index(Dockerの公式)からnode.jsのversion8.4のimageをDLする。
$ docker images
imageの一覧を表示(DLしたのでnodeが追加されている)
$ docker pull node:8.4
8.4: Pulling from library/node
aa18ad1a0d33: Pull complete
90f6d19ae388: Pull complete
94273a890192: Pull complete
c9110c904324: Pull complete
788d73c0fb6b: Pull complete
f221bb562f24: Pull complete
14414a6a768d: Pull complete
af6d2b2ad991: Pull complete
Digest: sha256:080488acfe59bae32331ce28373b752f3f848be8b76c2c2d8fdce28205336504
Status: Downloaded newer image for node:8.4
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node 8.4 386940f92d24 16 months ago 673MB
$ sudo docker run -i -t node /bin/bash
-i ・・・インタラクティブモード
-t ・・・コンテナの中でターミナルを立ち上げる。
imageからcontainerを作成し、bashで操作する。
$ docker ps -a
作られているcontainerを確認する。
$ docker exec -i -t [container_id] /bin/bash
再びcontainerをbashで操作する
(container_idは$ docker ps -aで調べる)
$docker rm [container_id]
containerを削除
(container_idは$ docker ps -aで調べる)
$ docker rmi image_id
imageを削除
(image_idは$ docker imagesで調べる)
#Puppeteerをインストールする
root@999999e9bb99:/# apt-get update
aptをアップデートする
root@999999e9bb99:/# 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 fonts-noto-cjk
Puppeteerに必要なライブラリをインストール
root@999999e9bb99:/# npm install puppeteer
npmからpuppeteerをインストール
使っているimageがnodeじゃない人は、nodeをインストールしてください。
root@999999e9bb99:/# apt-get install -y nodejs npm
#Dockerfileを作成する
先ほどimageはclassのようなものだと思い込んでると書きましたが、
Dockerfileを作ることによってオーバーライドできるイメージです。
Dockerfileにここまでやってきた手順を記載してしまえば、
Dockerfileをbuildしてimageからcontainerを作れば手続き不要です。
##Debian系
mbp:dockers kuniatsu$ cat Dockerfile
FROM node:8.4
MAINTAINER kuniatsu
# 日本語文字化け対策
RUN echo 'deb http://ftp.jp.debian.org/debian jessie-backports main' >> /etc/apt/sources.list
#puppeteerに必要なlibrary
RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends \
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 \
fonts-noto-cjk \
vim
RUN npm install puppeteer
CMD ["echo","now runing..."]
##Red Hat系
のちにAWSで使うことになったので、Red Hat系も参考に載せておきます。
mbp:dockers kuniatsu$ cat Dockerfile
FROM amazonlinux
MAINTAINER kuniatsu
RUN echo "now building..."
RUN curl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
RUN set -ex; \
yum -y update; \
yum -y install \
vim \
nodejs \
libX11 \
libXcomposite \
libXcursor \
libXdamage \
libXext \
libXi \
libXtst \
cups-libs \
libXScrnSaver \
libXrandr \
alsa-lib \
pango \
atk \
at-spi2-atk \
gtk3
RUN node -v
RUN npm install puppeteer
CMD ["echo","now runing..."]
$ docker build -t [name] .
Dockerfileをimageにする
$ sudo docker run -i -t name /bin/bash
後は、imageと同じ使い方。