フロントエンドエンジニアが新規プロジェクトを開発しやすくするためにDockerを導入してみた。Dockerの導入方法

JavaScript初心者の方にオススメの記事
Dockerとは
Dockerとはオープンソースの次世代仮想化技術で、アプリケーションを「コンテナ」にパッケージングして、デプロイ、実行できます。Go言語で書かれていてLinuxカーネルのみに依存します。
参考:今からでも間に合うDockerの基礎。コンテナとは何か、Dockerfileとは何か。Docker Meetup Tokyo #2
Dockerを利用するメリット
dockerのメリットなどに関して、docker meetupの動画が参考になりますので、これから入れようと悩んでいる方はこちらを見ると理解しやすいかと思います。
Dockerの導入
Macの導入に関しては下記になります。始めるにはDocker for MacとDOOKER TOOLBOXの2つのインストールをします。まずはDocker for Macのインストール方法から説明します。
Docker for Macのインストール
https://docs.docker.com/engine/installation/mac/
https://docs.docker.com/docker-for-mac/
[@PC] ~/Documents/dev/ (master)
$ docker-compose up --build
-bash: docker-compose: command not found
[@PC] ~/Documents/dev/ (master)
$ curl -L https://github.com/docker/compose/releases/download/1.7.0/docker-compose-`uname -s`-`uname -m` > ./docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 601 0 601 0 0 569 0 --:--:-- 0:00:01 --:--:-- 570
100 4865k 100 4865k 0 0 1113k 0 0:00:04 0:00:04 --:--:-- 1652k
[@PC] ~/Documents/dev/ (master)
$ sudo mv ./docker-compose /usr/bin/docker-compose
Password:
[@PC] ~/Documents/dev/ (master)
$ sudo chmod +x /usr/bin/docker-compose
[@PC] ~/Documents/dev/ (master)
$ docker-compose up --build
ERROR:
Can't find a suitable configuration file in this directory or any
parent. Are you in the right directory?
Supported filenames: docker-compose.yml, docker-compose.yamldocker-compose.yamlとDockerfileを作って、再度起動を試みます。
Dockerfileはプロジェクトのルートに置いておきます。
web:
build: ./
volumes:
- "./:/dev/"
working_dir: /dev/
ports:
- "9000:9000"FROM node:5.12
MAINTAINER name
WORKDIR /dev/
EXPOSE 9000
CMD ["npm", "install"]
CMD ["npm", "start"]$ docker-compose up --build
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.docker-machine start defaultを起動しろと怒られるので、起動してみる。
$ docker-machine start default
Host does not exist: "default"するとエラーが起きる。これはそもそもdockerを起動できていなかった。
かわいいくじらちゃんを起動。サーバーが起動できていれば、下記の画像のサイドバーに記述されます。
ビルドに成功するとこんな感じのがコンソールに表示されます。
$ docker-compose up -d
Building web
Step 1 : FROM node:5.12
5.12: Pulling from library/node
5c90d4a2d1a8: Pull complete
ab30c63719b1: Pull complete
c6072700a242: Pull complete
abb742d515b4: Pull complete
22efa86cdb65: Pull complete
dc09101fb56d: Pull complete
Digest: sha256:278b754e07da59330b0a13b6bc0ce5f80403f865ba854c49c4be5a669c0a95e3
Status: Downloaded newer image for node:5.12
---> 5b1c263efd1e
Step 2 : MAINTAINER name
---> Running in 3b055cd6635b
---> 28d7270e135b
Removing intermediate container 3b055cd6635b
Step 3 : WORKDIR /dev/
---> Running in 36752614dbf4
---> cb35eaf4228c
Removing intermediate container 36752614dbf4
Step 4 : EXPOSE 9000
---> Running in d08de150deaf
---> 693efe86877f
Removing intermediate container d08de150deaf
Step 5 : CMD npm install
---> Running in 7b2f3340219e
---> 499ca17f6bbf
Removing intermediate container 7b2f3340219e
Step 6 : CMD npm start
---> Running in 39b28e533694
---> ec33139787c3
Removing intermediate container 39b28e533694
Successfully built ec33139787c3
WARNING: Image for service web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating dev_1Docker toolboxのインストール
特に難しいことはなく、OSを選択してdmgファイルがダウンロードされるので、そのファイルを開けばOKです。
https://www.docker.com/products/docker-toolbox
サーバーの細かい設定はサーバーサイドのエンジニアに行ってもらったのですが、追記していく予定です。
dockerを導入することによって、stagingやdevelopなどで環境に依存しない開発が可能になりました。
フロントエンドの人間がdockerで幸せになれるポイント
無駄なコミュニケーションを排除できる
フロントエンドのエンジニアだと、「ステージングのデータが違うので見た目が変わってしまう」「データベースのデータがおかしいので、これを治してください」みたいなデータの問題で無駄なコミュニケーションが発生したりします。
また、ビジネスやディレクターなどにアプリケーションの確認をしてもらう際にも「データやAPIの問題」という話をすることがよくあるかと思いますので、そういう時の無駄なコミュニケーションが排除できるのは嬉しいですよね。開発に集中したいのに…ということもありますので、積極的にSlackでもリアルでもこういう無駄なコミュニケーションは避けていきたい。
そもそもそれフロントエンドが伝えなければいけないの…っていうこともあるかと思いますので、余計なストレスから解き放たれることになります。
以上、フロントエンドのエンジニアがDockerを導入してみた記事でした。同じフロントエンドの方々が幸せになれれば幸いです。
参考リンク
参考:今からでも間に合うDockerの基礎。コンテナとは何か、Dockerfileとは何か。Docker Meetup Tokyo #2
Docker for MAC :
https://docs.docker.com/engine/installation/mac/
https://docs.docker.com/docker-for-mac/
docker toolbox :
https://www.docker.com/products/docker-toolbox
dockerを起動するときのエラーとその対処方法についてはこちらの記事もどうぞ。
そもそもフロントエンドの技術がそこまでわからない、これから伸ばしていきたいという方はこちら。
JavaScript初心者の方にオススメの記事











