SlideShare a Scribd company logo
1 of 25
Download to read offline
AngularJSを通して
Dockerと触れあった
at Angular meetup #3
• pastelInc
• お仕事はPHP, JavaScript
• 今日はカメラ担当
Dockerを知らないの!?
Dockerは何を解決するのか
デプロイの問題
• デプロイしたら動かなかった
• デプロイ環境をすぐ用意できなかった
• サーバごとに違うライブラリ、バージョン
• プロビジョニングしたくない
• デプロイ環境再構築で涙
求めたのは
もっと手軽なデプロイ環境
Docker
• 再現性のあるインフラ基盤を迅速に構築
• “コンテナ”同士は互いに隔離
• オープンソース
• Dockerfileでインフラをコードとして記述
• アプリの言語に寄らず、同じやり方でデプロイ
VMとコンテナの違い
Dockerは”コンテナ”を扱う
プラットフォーム
AngularJSアプリを作って
Docker上で動かしてみよう!
• https://github.com/angular/material-start
アプリケーション動作環境
• Node.js
• 8080番ポートを使用
$ node -v
v0.12.5
$ npm -v
2.11.3
コンテナの起動
• docker run <オプション> <イメージ名:タグ> <コマンド> <引数>
• -i はコンテナでの標準入力を可能にする
• -t は擬似ターミナルを展開する
$ docker run -i -t node bash
root@d7d20a8e7bb7:/# node -v
v5.0.0
root@d7d20a8e7bb7:/# npm -v
3.3.6
コンテナの起動
• docker run <オプション> <イメージ名:タグ> <コマンド> <引数>
• -v はホストのディレクトリをコンテナにマウントする
• -p はポートフォアリングする
$ docker run -v `pwd`:/tmp -p 8080:8080 node ls -l
total 60
drwxr-xr-x 2 root root 4096 Nov 10 00:43 bin
drwxr-xr-x 2 root root 4096 Aug 26 16:31 boot
drwxr-xr-x 5 root root 360 Nov 22 02:58 dev
drwxr-xr-x 61 root root 4096 Nov 22 02:58 etc
drwxr-xr-x 2 root root 4096 Aug 26 16:31 home
drwxr-xr-x 12 root root 4096 Nov 10 00:43 lib
コンテナの停止
• Ctrl + P + Qでコンテナを停止せずに

元のターミナルに戻る(デタッチ)
• 再度アタッチ
root@d7d20a8e7bb7:/# exit
$
$ docker attach d7d20a8e7bb7
root@d7d20a8e7bb7:/#
• コンテナを起動してアプリを実行
$ cd material-start
$ docker run -it -v `pwd`:/tmp -p 8080:8080 node:0.12.5 bash
root@d7d20a8e7bb7:/# node -v
v0.12.5
root@d7d20a8e7bb7:/# npm -v
2.11.3
root@d7d20a8e7bb7:/# cd /tmp
root@d7d20a8e7bb7:/tmp# npm start
Dockerfile
• Dockerコンテナの構成をまとめて記述
• docker buildでイメージの作成
Dockerイメージ
• イメージはレイヤの重
なり
• レイヤとはdocker run
してからのファイル差
分のこと
• アプリ実行のためのDockerfileを作成
$ touch Dockerfile
$ echo “FROM node:0.12.5-onbuild” > Dockerfile
$ cat Dockerfile
FROM node:0.12.5-onbuild
Language Stack
• Docker Hubには各言語の公式リポジトリが存
在する
• タグによるバージョンの指定が可能
• ONBUILDディレクティブを含んだイメージが
ある
FROM node:0.12.7
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ONBUILD COPY package.json /usr/src/app/
ONBUILD RUN npm install
ONBUILD COPY . /usr/src/app
CMD [ "npm", "start" ]
イメージ作成
• docker build <オプション> <PATH>
• -t はイメージの<名前:タグ>を決める
$ docker build -t pastelinc/material-start .
イメージ表示
• docker images <オプション>
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
pastelinc/material-start latest 820019b78a27 15 minutes ago 1.042 GB
• Dockerfileを使ってイメージを作成
• イメージからコンテナを起動
$ docker build -t pastelinc/material-start .
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
pastelinc/material-start latest 820019b78a27 15 minutes ago 1.042 GB
$ docker run -d -p 3000:8080 pastelinc/material-start
まとめ
• Dockerはデプロイの課題を解決してくれる
• Dockerfileを用意すると実行環境をすぐに作れる
• 悩まず手軽にインフラ環境をどこでも構築でき
て楽しい!
• 現在プロダクションでの採用はまだ少ない

More Related Content

What's hot

Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするRyo Adachi
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようTakuma Morikawa
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Akira Inoue
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめxyzplus_net
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成shigeki_ohtsu
 
Rails on Dockerとの戦い
Rails on Dockerとの戦いRails on Dockerとの戦い
Rails on Dockerとの戦いYasutomo Uemori
 
Reactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたReactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたTsuyoshi Maeda
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Ato ARAKI
 
Ciじゃない方のJenkins
Ciじゃない方のJenkinsCiじゃない方のJenkins
Ciじゃない方のJenkinsKatsuhiro Miura
 
Dockerで環境構築したら捗った話
Dockerで環境構築したら捗った話Dockerで環境構築したら捗った話
Dockerで環境構築したら捗った話Kent Fujii
 
初心者が伝えるDocker超入門
初心者が伝えるDocker超入門初心者が伝えるDocker超入門
初心者が伝えるDocker超入門chichi1091
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話Kazuto Kusama
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点Jun-ichi Sakamoto
 
「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」Embarcadero Technologies
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 ClojureYoshitaka Kawashima
 
究極にして至高のWAF
究極にして至高のWAF究極にして至高のWAF
究極にして至高のWAFYuki Ishikawa
 
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜Yuki Ishikawa
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open APIKohei Saito
 

What's hot (20)

Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングするAnsibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
 
Vagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみようVagrantと網元で開発環境を作ってみよう
Vagrantと網元で開発環境を作ってみよう
 
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
Linux & Mac OS でも動く! ~ オープンソース & クロスプラットフォーム .NET の歩き方 ~
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
 
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
 
Rails on Dockerとの戦い
Rails on Dockerとの戦いRails on Dockerとの戦い
Rails on Dockerとの戦い
 
Reactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみたReactとbabelで簡易タスク管理ツール作ってみた
Reactとbabelで簡易タスク管理ツール作ってみた
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
 
Tizen native application
Tizen native applicationTizen native application
Tizen native application
 
Firefox Mobile
Firefox MobileFirefox Mobile
Firefox Mobile
 
Ciじゃない方のJenkins
Ciじゃない方のJenkinsCiじゃない方のJenkins
Ciじゃない方のJenkins
 
Dockerで環境構築したら捗った話
Dockerで環境構築したら捗った話Dockerで環境構築したら捗った話
Dockerで環境構築したら捗った話
 
初心者が伝えるDocker超入門
初心者が伝えるDocker超入門初心者が伝えるDocker超入門
初心者が伝えるDocker超入門
 
OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話OpenShift 3で、DockerのPaaSを作る話
OpenShift 3で、DockerのPaaSを作る話
 
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
 
「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」「マルチデバイスなDelphiで活かすWebアプリケーション」
「マルチデバイスなDelphiで活かすWebアプリケーション」
 
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
渋谷JVM#1 Immutable時代のプログラミング言語 Clojure
 
究極にして至高のWAF
究極にして至高のWAF究極にして至高のWAF
究極にして至高のWAF
 
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
Hotoの奇妙な挑戦 〜 Swiftクルセイダーズ 〜
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 

Similar to AngularJSを通してDockerと触れ合った

Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Nakazawa Yuichi
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Kazuyuki Mori
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Microsoft Corporation
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築MILI-LLC
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみようRyo Adachi
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~decode2016
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバるDaigou Harada
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729陽平 山口
 
コンテナ on Windows
コンテナ on Windowsコンテナ on Windows
コンテナ on WindowsTsubasa Nomura
 
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーWeb系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーYosuke INOUE
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみたKazuto Kusama
 
Dockerfile for Perl development
Dockerfile for Perl developmentDockerfile for Perl development
Dockerfile for Perl developmentYuzo Iwasaki
 
Docker Tシャツを着て Docker の話をする
Docker Tシャツを着て Docker の話をするDocker Tシャツを着て Docker の話をする
Docker Tシャツを着て Docker の話をするYoshiaki Yoshida
 
鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解Masahito Zembutsu
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう_norin_
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Masahito Zembutsu
 

Similar to AngularJSを通してDockerと触れ合った (20)

Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築Vagrant & Dockerによるイマドキの開発環境構築
Vagrant & Dockerによるイマドキの開発環境構築
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
 
Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法Docker for Windows & Web Apps for Containers 実践活用技法
Docker for Windows & Web Apps for Containers 実践活用技法
 
明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築明日からはじめられる Docker + さくらvpsを使った開発環境構築
明日からはじめられる Docker + さくらvpsを使った開発環境構築
 
Dockerを使ってみよう
Dockerを使ってみようDockerを使ってみよう
Dockerを使ってみよう
 
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
INF-015_そこのコンテナ、うまく積めてるね! ~Windows アプリケーション コンテナの展開と運用~
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729JAWS-UG Nagoya 20160729
JAWS-UG Nagoya 20160729
 
コンテナ on Windows
コンテナ on Windowsコンテナ on Windows
コンテナ on Windows
 
Electron early 2019
Electron early 2019Electron early 2019
Electron early 2019
 
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーWeb系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
 
新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた新しいOpenShiftのしくみを調べてみた
新しいOpenShiftのしくみを調べてみた
 
Dockerfile for Perl development
Dockerfile for Perl developmentDockerfile for Perl development
Dockerfile for Perl development
 
Docker Tシャツを着て Docker の話をする
Docker Tシャツを着て Docker の話をするDocker Tシャツを着て Docker の話をする
Docker Tシャツを着て Docker の話をする
 
鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解鯨物語~Dockerコンテナとオーケストレーションの理解
鯨物語~Dockerコンテナとオーケストレーションの理解
 
どっかのしたのほう
どっかのしたのほうどっかのしたのほう
どっかのしたのほう
 
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
第37回「Dockerのユースケースと将来」(2014/10/30 on しすなま!)
 

AngularJSを通してDockerと触れ合った