Virtual BoxやVMWareはこっち
Dockerはこっち
FROM node:6
MAINTAINER hhoriuchi hhoriuchi@uievolution.com
RUN apt-get -y update && apt-get -y upgrade \
&& apt-get install -y --no-install-recommends build-essential python wget \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /app/logs
WORKDIR /app
COPY package.json .
ENV NPM_CONFIG_LOGLEVEL info
RUN npm install --production
COPY . .
EXPOSE 3000
ENV NODE_ENV $NODE_ENV
CMD ["/usr/local/bin/node", "src/app.js"]
Compose
Swarm
Registry
Machine
# docker image上でコマンドを実行
$ docker run --rm -it ubuntu /bin/bash
# Dockerfile を元に docker image の構築
$ docker build -t tag
# 構築した imageの実行
$ docker start tag
# 実行中の Dockerコンテナの表示
$ docker ps -a
mysql:
image: mysql:5.6
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_bin
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
MYSQL_DATABASE: bento_test
redis:
image: redis
server:
build: ..
volumes:
- ..:/app
links:
- mysql
- redis
# サービスの起動
$ docker-compose up
# サーバ上でコマンドを実行
$ docker-compose run --rm server /app/scripts/exec-unit-test.sh
# クラスターの起動(実行すると joinに必要な tokenが表示される)
host01$ docker swarm init
# クラスターに参加
host02$ docker swarm join host01 --token=$WORKER_TOKEN
host03$ docker swarm join host01 --token=$MANAGER_TOKEN
# クラスターの状態表示
host01$ docker node list
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
74ir4572w3n9155wl2jgala4o host01 Ready Active Leader
8gag9kyuf6azs4ylojkyrui4s host02 Ready Active Reachable
a7kyx0ut9xn9mct2ersixuesz * host03 Ready Active Reachable
# 試しに nginxをサービスとして起動する
host01$ docker service create -p 80:80 --name="nginx_sample" --replicas=3 nginx
# サービスの状態を表示
host01$ docker service ls
ID NAME REPLICAS IMAGE COMMAND
8ejer8lok06o nginx_sample 1/3 nginx
# サービスのインスタンス数を変更
host01$ docker service scale nginx_sample=1
$ docker run --rm -v `pwd`:/app /app/exec-unit-test.sh
# 最初にプロセスをクリーンアップしてからテストを実行
$ docker-compose -f docker/docker-compose-test.yml kill
$ docker-compose -f docker/docker-compose-test.yml rm --force
$ docker-compose -f docker/docker-compose-test.yml build
$ docker-compose -f docker/docker-compose-test.yml run --rm server /app/scripts/exec-unit-test.sh
# 終わったらまたクリーンアップ
$ docker-compose -f docker/docker-compose-test.yml kill
$ docker-compose -f docker/docker-compose-test.yml rm --force