LoginSignup
4
5

More than 5 years have passed since last update.

npmのデプロイ環境を切り分けてDockerでビルドする方法

Last updated at Posted at 2017-03-12

やりたいこと

docker buildするときにデプロイ環境(production/staging/development)を分け、それぞれの環境ごとに別々の環境変数を使ってnpmでビルドしたい。

やりかた

docker build

docker buildに引数を渡す。Docker1.9以降なら、--build-argで引数が渡せる。
(例)docker build --build-arg NPM_DEPLOY_ENV=prod .

Dockerfile

1.の引数をnpm runに渡すようにDockerfileを変更する。

FROM node:7.3.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev libkrb5-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD package.json /myapp/package.json
RUN npm install
ADD . /myapp
ARG NPM_DEPLOY_ENV
RUN npm run deploy:${NPM_DEPLOY_ENV}

Dockerfileの例。最後の2行が引数に関する箇所。

package.json

package.jsonにそれぞれのデプロイ環境用のスクリプト(depoy:production, deploy:staging, deploy:development)を書く。

{
  "scripts": {
    "clean": "rimraf dist",
    "compile": "better-npm-run compile",
    "deploy:prod": "better-npm-run deploy:prod"
  },
  "betterScripts": {
    "compile": { 
      "command": "babel-node bin/compile",
      "env": {
        "DEBUG": "app:*"
      }
    },
    "deploy:prod": {
      "command": "npm run clean && npm run compile",
      "env": {
        "NODE_ENV": "production",
        "API_URL": "YOUR_API_URL",
        "DEBUG": "app:*"
      }
    }
  }
}
4
5
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
4
5