17
14

More than 1 year has passed since last update.

PHPやRubyとNode.jsを同一コンテナ内に手っ取り早く管理したい人のためのマルチステージビルド

Last updated at Posted at 2019-12-04

この記事は Docker Advent Calendar 2019 3日目の記事です。
抜けていたので急遽書きます。

背景

PHPやRuby、Node.jsを同一コンテナ内で管理したいときありますよね。
Laravel + VueやRails + React等。

そんなときDockerfileで個別にNode.jsをインストールしている記事を時々見かけます。
そんなあなたにマルチステージビルドがおすすめです!

DockerfileでPHPコンテナとNode.jsコンテナをマルチステージビルドで構築する例

FROM node:12.13.0-alpine as node

FROM php:7.3-fpm-alpine

## PDOなどインストールは省略

WORKDIR /var/www/html

# マルチステージビルドでphp-fpmコンテナにnodeとnpmを追加する
COPY --from=node /usr/local/bin/node /usr/local/bin/
COPY --from=node /usr/local/lib/node_modules/ /usr/local/lib/node_modules/
RUN ln -s /usr/local/bin/node /usr/local/bin/nodejs \
    && ln -s /usr/local/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \
    && ln -s /usr/local/lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx

Node.jsコンテナからnodeとnpmのバイナリをコピーし、シンボリックリンクを貼るだけ!
簡単でお手軽で早いです!

参考

Nuxt.js2.10とLaravel(6.0)を同一ディレクトリで動かすnuxt-laravelをDockerで環境構築

明日は@mei_9961さんの記事です。

17
14
2

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
17
14