やりたいこと
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:*"
}
}
}
}