EASIER ENVIRONMENT SETUP
DOCKERIZED WAY
FROM node:6
RUN
apt-get update --force-yes -y &&
mkdir -p /src
COPY package.json /src/package.json
RUN
apt-get update --force-yes -y &&
apt-get install --force-yes -y vim
RUN
cd /src; npm install --production
COPY . /src
RUN
cd /src; npm run build
EXPOSE 3000
ENV NODE_ENV production
ENV DB live
ENV TZ Asia/Seoul
WORKDIR /src
CMD npm run serve
Dockerfile
EASIER ENVIRONMENT SETUP
DOCKERIZED WAY
$ docker build -t node-docker .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About a minute ago 654.5 MB
EASIER ENVIRONMENT SETUP
OFFICIAL NODE Dockerfile
FROM buildpack-deps:jessie
RUN groupadd -r node && useradd -r -g node node
# gpg keys listed at https://github.com/nodejs/node
RUN set -ex
&& for key in
9554F04D7259F04124DE6B476D5A82AC7E37093B 94AE36675C464D64BAFA68DD7434390BDBE9B9C5
0034A06D9D9B0064CE8ADF6BF1747F4AD2306D93 FD3A5288F042B6850C66B31F09FE44734EB7990E
71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 DD8F2338BAE7501E3DD5AC78C273792F7D83545D
B9AE9905FFD7803F25714661B63B535A4C206CA9 C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8
; do
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys "$key";
done
ENV NPM_CONFIG_LOGLEVEL info
ENV NODE_VERSION 6.9.1
RUN curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz"
&& curl -SLO "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"
&& gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc
&& grep " node-v$NODE_VERSION-linux-x64.tar.xz$" SHASUMS256.txt | sha256sum -c -
&& tar -xJf "node-v$NODE_VERSION-linux-x64.tar.xz" -C /usr/local --strip-components=1
&& rm "node-v$NODE_VERSION-linux-x64.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt
&& ln -s /usr/local/bin/node /usr/local/bin/nodejs
CMD [ "node" ]
Dockerfile
EASIER ENVIRONMENT SETUP
DOCKERIZED WAY
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About a minute ago 654.5 MB
$ docker run --name docker-instance-1 --port 80:3000 node-docker
SINGLE-THREADED in MULTI-CORE
EASY TO SCALE
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About a minute ago 654.5 MB
$ docker run --name docker-instance-1 --port 80:3000 node-docker
$ docker run --name docker-instance-2 --port 81:3000 node-docker
$ docker run --name docker-instance-3 --port 82:3000 node-docker
.
.
.
SINGLE-THREADED in MULTI-CORE
EASY TO SCALE
http {
upstream application {
least_conn;
server localhost:80 max_fails=3 fail_timeout=60s;
server localhost:81 max_fails=3 fail_timeout=60s;
server localhost:82 max_fails=3 fail_timeout=60s;
}
server {
listen 80;
location / {
proxy_pass http://application;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
}
nginx.conf
FAST AND EASY TO ROLLBACK
BUILD WITH TAG
$ docker build -t node-docker .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About an hour ago 654.5 M
$ docker build -t node-docker:1982 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About an hour ago 654.5 MB
node-docker 1982 10394kdfksf1 About a minute ago 654.5 MB
FAST AND EASY TO ROLLBACK
BUILD WITH TAG
$ docker build -t node-docker .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About an hour ago 654.5 M
$ docker build -t node-docker:1982 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
node-docker latest 08a5b1c92fcf About an hour ago 654.5 MB
node-docker 1982 10394kdfksf1 About a minute ago 654.5 MB