SlideShare a Scribd company logo
1 of 24
株式会社インキュビット / みらい合同会社 瀬筒 貴仁
明日から始められる
Docker + さくらVPS
を使った開発環境構築
Something about me
瀬筒 貴仁 (せづつ たかひと)
• 株式会社インキュビット 研究開発部 統括マネージャー
• みらい合同会社 代表社員
• AIとUX、WEBシステムのコンサルティング及び、それらの開発をしていま
す
• 社内公用語は英語(Google Translate 最高!)
• Python, Ruby, JavaScript が社内で良く使われている言語
• 主な仕事は働きやすい社内環境を作ること
• プロジェクトマネジメントとか採用など、薄く広くやっている
• 属人化を減らしつつ、コアスキルを充分に発揮してもらう
Incubit Inc. / MILI LLC.
Something about me
三宅さんとCodeZineでサーバレスアーキテクチャについての連載やってます。
サーバレスアーキテクチャによるアプリケーション開発実践入門
https://codezine.jp/article/detail/10332
Incubit Inc. / MILI LLC.
The goal of this LT
1. VPS上で Docker が動くようにする
2. VPS上の各サービスに対し VirtualHost 名でアクセスできるようにする
3. 各 VirtualHost に対し個別の Basic 認証 ID/PWD を設定し、必要に応
じて開発環境を他の人に確認して貰えるようにする
– 特定IP(自宅と会社)からアクセスしている場合には Basic 認証は不要にす
る
4. ローカルで修正した内容が直接VPS上に反映されるようにする
5. いざという時にはローカルマシン上で Docker が動作するようにする
– 実行環境そのものを他の端末に移動したり、
他の端末で実行することができる
Incubit Inc. / MILI LLC.
Today’s Main Theme is Docker!
ここからが本番。ちゃんとDockerの話をしますよ!
まずはDockerの基礎をおさらいしてから。
What is Docker
Dockerは非常に軽量なコンテナ型アプリケーション実行環境です。
• 発表当時はソフトウェアの開発やテスト段階における利用が多かった
• 現在はクラウドからオンプレミスまで、急速に普及しはじめている
• EC2 Container Service (AWS)
• ARUKAS CLOUD (さくらインターネット)
• アプリケーションを開発するだけでなく、実行環境そのものを他の端末に移動したり、他の端末で
実行することができる
• 「イメージ」と「コンテナ」の概念がある
• コンテナは、ホストOSのkernel機能を利用し、ルート・ファイルシステムを実行する
• コンテナは、個別にリソース(プロセス、メモリ、デバイス、ネットワークなど)を持つ
• イメージは、コンテナを実行するときに必要な Read Only なファイルシステム
• イメージは、親子関係を持つイメージ・レイヤの集合体
• 個々のイメージ・レイヤは差分情報のみを記録している
• Git のブランチをイメージするとわかりやすいかも
• 共通するレイヤはイメージ間で共有できる
詳しくはDockerイメージの理解とコンテナのライフサイクルを見るといいです。
Incubit Inc. / MILI LLC.
What is Docker
Incubit Inc. / MILI LLC.
Other tools and Docker
よく比較されるツールとDockerの違いは以下のような形です。
Vagrant や chef とも比較されることがありますが、そもそもの目的が異なります。
Vagrant は「仮想環境の設定・操作用統一ツール」で、chef は「サーバー設定統一ツール」です。
Incubit Inc. / MILI LLC.
ホストOS
ドライバ
ゲストOS
Hyperviser
アプリ
コンテナエンジン
コンテナ
アプリ
マシン
ドライバ
マシンエミュレーター
ゲストOS
アプリ
ドライバ
ゲストOS
アプリ
ドライバ
ゲストOS
アプリ
コンテナ
アプリ
Xen や Hyper-V, KVM などはこ
の分野。1つのマシン上で複数の
OSが直接動くように設計されてい
る
VMWare や VirtualBox, Parallels
Desktop などはこの分野。ホスト
OS上で別のOSが独立して動くよ
うに設計されている
Docker。ホストOSの kernel を使
いながら、コンテナを独立したもの
として扱うように設計されている
I love Docker
以下のような理由から、最近はもっぱら Docker を使っています。
• 仮想VMの一種なので、ホストOSの環境をクリーンに保てる
• docker-compose を使うと、プロジェクトに必要なサーバーが一気に起動する
• 仮想化のオーバーヘッドが少ないので、複数のコンテナを立ち上げることで環境を分離し、
サーバーの複雑性を減らすだけでなく、より本番環境に近い構成で開発できる
• docker-compose.yml とか Dockerfile をコミットしておけばプロジェクトメンバー間で開発環境の差
違が起きない
• Gemfile とか package.json とかもちゃんと使おうね
• Docker for Mac とか Docker for Windows とかもあるので、開発者が好きなOSを自由に選択でき
る
• Git, CI, クラウドサーバーなどとの相性が良い
• EC2 Container Service もあるし CircleCI とか Jenkins とか TravisCI, Wercker とかでももち
ろん使える
• ホストOSのファイルシステムをマウントして使えるので、GUIベースのエディタとかが普段通りに使
える
• VirtualBox や Parallels Desktop より軽い
• IE のテスト環境が要らないなら Docker で充分
• クジラかわいいよクジラ
Incubit Inc. / MILI LLC.
Problems when using Docker locally
Docker を使うとぶちあたる問題もある。
• 軽量とはいえメモリとCPUをそれなりに使う
• Docker Image と Docker Components のサイズが意外とでかい
• Docker on Mac 使っていると、スリープ時にゲストOSの時間がズレる
• AWS Console とか AWS SDK とか oAuth とかがすぐ死ぬ
• Docker でビルド中にスリープするとビルドが終わらない
• 移動が多い仕事だと割とかなり困る
非力なマシンだとマジでキツイ!
Macのレインボーカーソルが止まらない!!
Incubit Inc. / MILI LLC.
Docker as Virtual Machine
• Docker はコンテナ型のアプリケーション実行環境
– Virtual Machine と同じ感覚で使うことができる
– ローカルで動かすことにこだわる必要はない
• docker-machine コマンドで外部サーバーと連携できる
– REST API 経由でサーバー上の Docker を操作可能
– 開発サーバーを用意すれば、手元マシンの負荷を減らせる
• 手元のマシンはエディタとターミナルとブラウザが動けばOK!
Incubit Inc. / MILI LLC.
Docker on Mac Docker Machine Style
マシン内で完結 サーバーはリモートで動かし、手元はクライアントのみ
ここがCPUと
メモリを喰う
docker-machineの
REST APIで通信
手元のPC VPS手元のPC
The goal of this LT
改めて本日のゴール。
1. VPS上で Docker が動くようにする
2. VPS上の各サービスに対し VirtualHost 名でアクセスできるようにする
3. 各 VirtualHost に対し個別の Basic 認証 ID/PWD を設定し、必要に応
じて開発環境を他の人に確認して貰えるようにする
– 特定IP(自宅と会社)からアクセスしている場合には Basic 認証は不要にす
る
4. ローカルで修正した内容が直接VPS上に反映されるようにする
5. いざという時にはローカルマシン上で Docker が動作するようにする
– 実行環境そのものを他の端末に移動したり、
他の端末で実行することができる
Incubit Inc. / MILI LLC.
Blueprint of this System
基本的な開発方法はこれまでとあまり変わっていない。
変更部分は背景色が異なる部分のみ。
Incubit Inc. / MILI LLC.
VPSサーバー (Ubuntu 16.04)
Docker Server
nginx
proxy
service
System I/O
service
ローカル環境 (Mac / Win / Linux)
Docker
Machine
System I/O
lsyncd
rsync
各種エディタ terminal
REST API
データ変更の
リアルタイム反映
ドメイン名で
参照先を変更
ドメイン名で
サーバーにアクセス
エディタ上で
修正作業を行う
リモートワークの人やクライアントに
直接開発環境を確認してもらえる!
サーバーログとかをリアルタイムで
見て貰えるので作業効率もUP!!
Why SAKURA VPS?
コストパフォーマンスが非常に高いから。 さくらのVPS 料金・仕様一覧
メモリ4GB, SSD 100GB, CPU 仮想4Core で月額4,000円切る。
他にも以下のようなメリットがある。
• データ転送量が無制限
• 転送量を心配しなくて良い
• 毎月固定費で開発サーバーが用意できる(稟議通しやすいの大事)
• rsync (ry
• IPv4 と IPv6 のグローバルIPが1サーバーにつき1つずつついてくる
• 東京と石狩にサーバーがあるので物理的に近い
• 海外からは遠いけど、主に国内で仕事してるので問題ない
• (共用回線だけど)100Mbps出るので rsync とかしやすい
• ローカルネットワークは1Gbps共有回線なので複数台構成もアリ
• コントロールパネルが日本語
• 英語は非対応だけどそのうち対応されるはず……
• カスタムOSのインストールができる
• CentOS7 Atomic Host とかもインストールできる
• ボタンを押すだけでスケールアップが可能
• インフラに弱い人でも簡単に管理できる
• さくらの技術者が有人監視している
Incubit Inc. / MILI LLC.
Setup VPS
Ubuntu 16.04 を使ってVPSサーバーをセットアップ。
• docker 用のユーザーを作成
– docker-machine がパスワードなしで sudo できるようにする
• 公開鍵をサーバーに置く
– docker-machine がパスワードなしでリモートからログインできるようにする
• ファイアウォールの設定をする
– docker-machine が Port 2376 を利用します
– http(s) と ssh が使う Port も開放しておく
– livereload を使うなら Port 35729 も開放する
• NTPの同期設定をする
– rsync する時とかに時刻がズレていると面倒なことになります
Incubit Inc. / MILI LLC.
Setup Docker Machine on VPS (1)
セットアップはコマンド一発。
• generic-ip-address: VPSサーバーのIPアドレス
• generic-ssh-port: VPSサーバーのSSHポート番号
• generic-ssh-user: VPSサーバーに接続する際に利用するユーザー名
sakura-vps の部分はサーバーに付けるエイリアス名なので、自分がわかりやすい名
前をつければOKです。(default を使うのは避けた方が良いです)
docker-compose は上記コマンドではサーバーにインストールされないので別途イン
ストールしてサーバー上で使えるようにする。
Incubit Inc. / MILI LLC.
$ docker-machine create --debug -d generic --generic-ip-address 192.168.1.10 --generic-
ssh-port 122 --generic-ssh-user dockermachine sakura-vps
$ docker-machine env
Error: No machine name(s) specified and no "default" machine exists
$ sudo apt-get install -y docker-compose
Setup Docker Machine on VPS (2)
よく使いそうなコマンドの紹介。
手元で docker を使う時と同様に、サーバーの状態管理や起動・終了などを行うこと
が可能。
docker コマンドはデフォルトでローカルを見ているが、以下のように env を上書きす
ると、以降は docker-machine 側を見るようになる。
Incubit Inc. / MILI LLC.
$ docker-machine env sakura-vps
$ docker-machine ls
$ docker-machine start sakura-vps
$ docker-machine stop sakura-vps
$ docker-machine restart sakura-vps
$ eval "$(docker-machine env sakura-vps)”
$ docker ps
$ docker info docker ps や docker info の結果は
ローカル環境のものではなく、
sakura-vps の環境のものが
レスポンスされるようになる!
Setup Docker Machine on VPS (demo)
実際のスクリプトを見せながらデモをします。
Incubit Inc. / MILI LLC.
Setup lsyncd & rsync
サーバー側で Docker のファイルをアップロードする場所を用意する。
ローカル側は Mac を想定。Homebrew を使ってインストールする。
プロジェクト毎に個別の設定があるはずなので、 lsyncd は別々に用意した。
Incubit Inc. / MILI LLC.
$ mkdir /var/docker
$ sudo chown docker:docker /var/docker
$ brew install rsync lsyncd lua
$ sudo lsyncd -log scarce ~/path/to/lsyncd/proxy.lua
Docker Server
nginx
proxy
service service
Docker
Machine
System I/O
rsync
各種エディタ terminal
データ変更の
リアルタイム反映
lsyncd
System I/O
Setup lsyncd & rsync (demo)
実際のスクリプトを見せながらデモをします。
ポイントは
• rsync の待ち時間をゼロにする
• docker サーバー側で使うディレクトリは lsyncd の対象から外す
• アプリケーション毎に別の設定ファイルを用意する
Incubit Inc. / MILI LLC.
Setup Reverse Proxy
docker-compose を使って立ち上げたサービス同士は原則として別の仮想ネットワー
ク上で動作するように設計されている。
この設定だとリバースプロキシと各ウェブサービスが通信できず、リバースプロキシ
での Virtual Host による参照先変更ができないため、同じネットワークを利用するよ
うに変更する。
Incubit Inc. / MILI LLC.
$ docker-machine ssh sakura-vps “docker network create --driver bridge shared”
Docker Server
全てのサービスを
shared ネットワークに
接続させる
shared Network
proxy service service
Setup Reverse Proxy
実際のスクリプトを見せながらデモをします。
ポイントは
• nginx-proxy を使って全ての http(s) 通信を処理する
• Let‘s Encrypt を使ってSSL証明書を発行する
• docker-compose.yaml にネットワークとドメイン、SSL証明書、Basic認証の情報を
きちんと設定する
Incubit Inc. / MILI LLC.
Usage Evaluation
2ヶ月ほどこの環境で開発をしてみた結果のメリット/デメリット
メリット
• リモートワークの人やクライアント、その場にいない人に直接開発環境の状態を確認してもらえる
– sudo 権限のない一般ユーザーを作成し、特定ディレクトリ以下のみアクセス権を与えるなどでセ
キュリティ上の問題は大体回避できる
– 心配ならVPNとかの併用も考えるとよい
• 何か問題が起きた時も、サーバーログをリモートからリアルタイムで見て貰えるので作業効率が上がる
– ちょっと席に来て、がなくなるので楽
• 重い処理が自分のマシンで動いていないため、手元のマシンが非力でも割となんとかなる
– MacBook (メモリ8GB) でもなんとか開発できる状態になる
デメリット
• 地下鉄で移動中に開発できない
– むしろメリットかもしれない……
• lsyncd がたまにハングアップする
– TimeMachine との相性が悪いらしい。Windowsとかなら大丈夫と思われる
解決しなかった問題
• ブラウザ上で動くアプリケーションがそもそも重いパターンは割とどうしようもない
– おとなしくあきらめます……
Incubit Inc. / MILI LLC.
THANKS FOR YOUR TIME
今日の資料やソースコードは全て github.com/redmount/docker-machine-for-development や
SlideShare にアップロードしますのでご自由にお使いください。
細かい部分の補足を書いたブログも公開します。そちらも是非ご確認ください!
株式会社インキュビットでは
一緒にAIやUX、WEBアプリケーションを作っていく
様々な分野のスペシャリストを募集しています。
興味のある方は是非、お声掛けください!
facebook: sezutsu / twitter: szt_redmount

More Related Content

What's hot

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところY Watanabe
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築gree_tech
 
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べたWkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べたfirewood
 
技術ブログを書こう
技術ブログを書こう技術ブログを書こう
技術ブログを書こうakira6592
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)Takanori Sejima
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjugYahoo!デベロッパーネットワーク
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門demuyan
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術までAkihiro Suda
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてYahoo!デベロッパーネットワーク
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Etsuji Nakai
 
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法HTML5マークアップの心得と作法
HTML5マークアップの心得と作法Futomi Hatano
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方増田 亨
 
Kubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティKubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティNGINX, Inc.
 

What's hot (20)

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
 
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
WkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べたWkWebViewのキャッシュについて調べた
WkWebViewのキャッシュについて調べた
 
Docker超入門
Docker超入門Docker超入門
Docker超入門
 
技術ブログを書こう
技術ブログを書こう技術ブログを書こう
技術ブログを書こう
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
sysloadや監視などの話(仮)
sysloadや監視などの話(仮)sysloadや監視などの話(仮)
sysloadや監視などの話(仮)
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
低レイヤー入門
低レイヤー入門低レイヤー入門
低レイヤー入門
 
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
Dockerセキュリティ: 今すぐ役に立つテクニックから,次世代技術まで
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務についてヤフーのプライベートクラウドとクラウドエンジニアの業務について
ヤフーのプライベートクラウドとクラウドエンジニアの業務について
 
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
 
HTML5マークアップの心得と作法
HTML5マークアップの心得と作法HTML5マークアップの心得と作法
HTML5マークアップの心得と作法
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
Kubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティKubernetes環境で実現するWebアプリケーションセキュリティ
Kubernetes環境で実現するWebアプリケーションセキュリティ
 

Similar to 明日からはじめられる Docker + さくらvpsを使った開発環境構築

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Masahito Zembutsu
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでRyo Nakamaru
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker雄哉 吉田
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコムTomoyaTakegoshi
 
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーWeb系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーYosuke INOUE
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Masahiro Nagano
 
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入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門Tsukasa Kato
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもんMasahito Zembutsu
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-Saki Homma
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料teruyaono1
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門hiro nemu
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようTakashi Makino
 
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門小川 昌吾
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめxyzplus_net
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Masahito Zembutsu
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバるDaigou Harada
 
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイPlay framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイYoshiteru Takeshita
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Masahito Zembutsu
 

Similar to 明日からはじめられる Docker + さくらvpsを使った開発環境構築 (20)

Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
Dockerの期待と現実~Docker都市伝説はなぜ生まれるのか~
 
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまでDockerを使ったローカルでの開発から本番環境へのデプロイまで
Dockerを使ったローカルでの開発から本番環境へのデプロイまで
 
捕鯨!詳解docker
捕鯨!詳解docker捕鯨!詳解docker
捕鯨!詳解docker
 
2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム2019年度 CaaS ワークショップ @ NTTコム
2019年度 CaaS ワークショップ @ NTTコム
 
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ーWeb系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
Web系エンジニアのためのスキルアップ講座 ーDockerで開発環境を作ろう ー
 
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
Dockerで遊んでみよっかー YAPC::Asia Tokyo 2014
 
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入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
 
Docker v14
Docker v14Docker v14
Docker v14
 
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
はじめてのAzure Web App for Containers! -コンテナの基礎から DevOps 環境の構築まで-
 
Docker講習会資料
Docker講習会資料Docker講習会資料
Docker講習会資料
 
Docker実践入門
Docker実践入門Docker実践入門
Docker実践入門
 
Dockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しようDockerでらくらく開発・運用を体感しよう
Dockerでらくらく開発・運用を体感しよう
 
アプリ屋のための Docker入門
アプリ屋のための Docker入門アプリ屋のための Docker入門
アプリ屋のための Docker入門
 
2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ2014.11.01 Dockerことはじめ
2014.11.01 Dockerことはじめ
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Dockerで開発環境をデリバる
Dockerで開発環境をデリバるDockerで開発環境をデリバる
Dockerで開発環境をデリバる
 
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイPlay framework+docker+aws ecr+aws beanstalk で楽々デプロイ
Play framework+docker+aws ecr+aws beanstalk で楽々デプロイ
 
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
Docker/Aarukas入門ハンズオン資料~第1回さくらとコンテナの夕べ #さくらの夕べ 番外編
 

明日からはじめられる Docker + さくらvpsを使った開発環境構築

  • 1. 株式会社インキュビット / みらい合同会社 瀬筒 貴仁 明日から始められる Docker + さくらVPS を使った開発環境構築
  • 2. Something about me 瀬筒 貴仁 (せづつ たかひと) • 株式会社インキュビット 研究開発部 統括マネージャー • みらい合同会社 代表社員 • AIとUX、WEBシステムのコンサルティング及び、それらの開発をしていま す • 社内公用語は英語(Google Translate 最高!) • Python, Ruby, JavaScript が社内で良く使われている言語 • 主な仕事は働きやすい社内環境を作ること • プロジェクトマネジメントとか採用など、薄く広くやっている • 属人化を減らしつつ、コアスキルを充分に発揮してもらう Incubit Inc. / MILI LLC.
  • 4. The goal of this LT 1. VPS上で Docker が動くようにする 2. VPS上の各サービスに対し VirtualHost 名でアクセスできるようにする 3. 各 VirtualHost に対し個別の Basic 認証 ID/PWD を設定し、必要に応 じて開発環境を他の人に確認して貰えるようにする – 特定IP(自宅と会社)からアクセスしている場合には Basic 認証は不要にす る 4. ローカルで修正した内容が直接VPS上に反映されるようにする 5. いざという時にはローカルマシン上で Docker が動作するようにする – 実行環境そのものを他の端末に移動したり、 他の端末で実行することができる Incubit Inc. / MILI LLC.
  • 5. Today’s Main Theme is Docker! ここからが本番。ちゃんとDockerの話をしますよ! まずはDockerの基礎をおさらいしてから。
  • 6. What is Docker Dockerは非常に軽量なコンテナ型アプリケーション実行環境です。 • 発表当時はソフトウェアの開発やテスト段階における利用が多かった • 現在はクラウドからオンプレミスまで、急速に普及しはじめている • EC2 Container Service (AWS) • ARUKAS CLOUD (さくらインターネット) • アプリケーションを開発するだけでなく、実行環境そのものを他の端末に移動したり、他の端末で 実行することができる • 「イメージ」と「コンテナ」の概念がある • コンテナは、ホストOSのkernel機能を利用し、ルート・ファイルシステムを実行する • コンテナは、個別にリソース(プロセス、メモリ、デバイス、ネットワークなど)を持つ • イメージは、コンテナを実行するときに必要な Read Only なファイルシステム • イメージは、親子関係を持つイメージ・レイヤの集合体 • 個々のイメージ・レイヤは差分情報のみを記録している • Git のブランチをイメージするとわかりやすいかも • 共通するレイヤはイメージ間で共有できる 詳しくはDockerイメージの理解とコンテナのライフサイクルを見るといいです。 Incubit Inc. / MILI LLC.
  • 7. What is Docker Incubit Inc. / MILI LLC.
  • 8. Other tools and Docker よく比較されるツールとDockerの違いは以下のような形です。 Vagrant や chef とも比較されることがありますが、そもそもの目的が異なります。 Vagrant は「仮想環境の設定・操作用統一ツール」で、chef は「サーバー設定統一ツール」です。 Incubit Inc. / MILI LLC. ホストOS ドライバ ゲストOS Hyperviser アプリ コンテナエンジン コンテナ アプリ マシン ドライバ マシンエミュレーター ゲストOS アプリ ドライバ ゲストOS アプリ ドライバ ゲストOS アプリ コンテナ アプリ Xen や Hyper-V, KVM などはこ の分野。1つのマシン上で複数の OSが直接動くように設計されてい る VMWare や VirtualBox, Parallels Desktop などはこの分野。ホスト OS上で別のOSが独立して動くよ うに設計されている Docker。ホストOSの kernel を使 いながら、コンテナを独立したもの として扱うように設計されている
  • 9. I love Docker 以下のような理由から、最近はもっぱら Docker を使っています。 • 仮想VMの一種なので、ホストOSの環境をクリーンに保てる • docker-compose を使うと、プロジェクトに必要なサーバーが一気に起動する • 仮想化のオーバーヘッドが少ないので、複数のコンテナを立ち上げることで環境を分離し、 サーバーの複雑性を減らすだけでなく、より本番環境に近い構成で開発できる • docker-compose.yml とか Dockerfile をコミットしておけばプロジェクトメンバー間で開発環境の差 違が起きない • Gemfile とか package.json とかもちゃんと使おうね • Docker for Mac とか Docker for Windows とかもあるので、開発者が好きなOSを自由に選択でき る • Git, CI, クラウドサーバーなどとの相性が良い • EC2 Container Service もあるし CircleCI とか Jenkins とか TravisCI, Wercker とかでももち ろん使える • ホストOSのファイルシステムをマウントして使えるので、GUIベースのエディタとかが普段通りに使 える • VirtualBox や Parallels Desktop より軽い • IE のテスト環境が要らないなら Docker で充分 • クジラかわいいよクジラ Incubit Inc. / MILI LLC.
  • 10. Problems when using Docker locally Docker を使うとぶちあたる問題もある。 • 軽量とはいえメモリとCPUをそれなりに使う • Docker Image と Docker Components のサイズが意外とでかい • Docker on Mac 使っていると、スリープ時にゲストOSの時間がズレる • AWS Console とか AWS SDK とか oAuth とかがすぐ死ぬ • Docker でビルド中にスリープするとビルドが終わらない • 移動が多い仕事だと割とかなり困る 非力なマシンだとマジでキツイ! Macのレインボーカーソルが止まらない!! Incubit Inc. / MILI LLC.
  • 11. Docker as Virtual Machine • Docker はコンテナ型のアプリケーション実行環境 – Virtual Machine と同じ感覚で使うことができる – ローカルで動かすことにこだわる必要はない • docker-machine コマンドで外部サーバーと連携できる – REST API 経由でサーバー上の Docker を操作可能 – 開発サーバーを用意すれば、手元マシンの負荷を減らせる • 手元のマシンはエディタとターミナルとブラウザが動けばOK! Incubit Inc. / MILI LLC. Docker on Mac Docker Machine Style マシン内で完結 サーバーはリモートで動かし、手元はクライアントのみ ここがCPUと メモリを喰う docker-machineの REST APIで通信 手元のPC VPS手元のPC
  • 12. The goal of this LT 改めて本日のゴール。 1. VPS上で Docker が動くようにする 2. VPS上の各サービスに対し VirtualHost 名でアクセスできるようにする 3. 各 VirtualHost に対し個別の Basic 認証 ID/PWD を設定し、必要に応 じて開発環境を他の人に確認して貰えるようにする – 特定IP(自宅と会社)からアクセスしている場合には Basic 認証は不要にす る 4. ローカルで修正した内容が直接VPS上に反映されるようにする 5. いざという時にはローカルマシン上で Docker が動作するようにする – 実行環境そのものを他の端末に移動したり、 他の端末で実行することができる Incubit Inc. / MILI LLC.
  • 13. Blueprint of this System 基本的な開発方法はこれまでとあまり変わっていない。 変更部分は背景色が異なる部分のみ。 Incubit Inc. / MILI LLC. VPSサーバー (Ubuntu 16.04) Docker Server nginx proxy service System I/O service ローカル環境 (Mac / Win / Linux) Docker Machine System I/O lsyncd rsync 各種エディタ terminal REST API データ変更の リアルタイム反映 ドメイン名で 参照先を変更 ドメイン名で サーバーにアクセス エディタ上で 修正作業を行う リモートワークの人やクライアントに 直接開発環境を確認してもらえる! サーバーログとかをリアルタイムで 見て貰えるので作業効率もUP!!
  • 14. Why SAKURA VPS? コストパフォーマンスが非常に高いから。 さくらのVPS 料金・仕様一覧 メモリ4GB, SSD 100GB, CPU 仮想4Core で月額4,000円切る。 他にも以下のようなメリットがある。 • データ転送量が無制限 • 転送量を心配しなくて良い • 毎月固定費で開発サーバーが用意できる(稟議通しやすいの大事) • rsync (ry • IPv4 と IPv6 のグローバルIPが1サーバーにつき1つずつついてくる • 東京と石狩にサーバーがあるので物理的に近い • 海外からは遠いけど、主に国内で仕事してるので問題ない • (共用回線だけど)100Mbps出るので rsync とかしやすい • ローカルネットワークは1Gbps共有回線なので複数台構成もアリ • コントロールパネルが日本語 • 英語は非対応だけどそのうち対応されるはず…… • カスタムOSのインストールができる • CentOS7 Atomic Host とかもインストールできる • ボタンを押すだけでスケールアップが可能 • インフラに弱い人でも簡単に管理できる • さくらの技術者が有人監視している Incubit Inc. / MILI LLC.
  • 15. Setup VPS Ubuntu 16.04 を使ってVPSサーバーをセットアップ。 • docker 用のユーザーを作成 – docker-machine がパスワードなしで sudo できるようにする • 公開鍵をサーバーに置く – docker-machine がパスワードなしでリモートからログインできるようにする • ファイアウォールの設定をする – docker-machine が Port 2376 を利用します – http(s) と ssh が使う Port も開放しておく – livereload を使うなら Port 35729 も開放する • NTPの同期設定をする – rsync する時とかに時刻がズレていると面倒なことになります Incubit Inc. / MILI LLC.
  • 16. Setup Docker Machine on VPS (1) セットアップはコマンド一発。 • generic-ip-address: VPSサーバーのIPアドレス • generic-ssh-port: VPSサーバーのSSHポート番号 • generic-ssh-user: VPSサーバーに接続する際に利用するユーザー名 sakura-vps の部分はサーバーに付けるエイリアス名なので、自分がわかりやすい名 前をつければOKです。(default を使うのは避けた方が良いです) docker-compose は上記コマンドではサーバーにインストールされないので別途イン ストールしてサーバー上で使えるようにする。 Incubit Inc. / MILI LLC. $ docker-machine create --debug -d generic --generic-ip-address 192.168.1.10 --generic- ssh-port 122 --generic-ssh-user dockermachine sakura-vps $ docker-machine env Error: No machine name(s) specified and no "default" machine exists $ sudo apt-get install -y docker-compose
  • 17. Setup Docker Machine on VPS (2) よく使いそうなコマンドの紹介。 手元で docker を使う時と同様に、サーバーの状態管理や起動・終了などを行うこと が可能。 docker コマンドはデフォルトでローカルを見ているが、以下のように env を上書きす ると、以降は docker-machine 側を見るようになる。 Incubit Inc. / MILI LLC. $ docker-machine env sakura-vps $ docker-machine ls $ docker-machine start sakura-vps $ docker-machine stop sakura-vps $ docker-machine restart sakura-vps $ eval "$(docker-machine env sakura-vps)” $ docker ps $ docker info docker ps や docker info の結果は ローカル環境のものではなく、 sakura-vps の環境のものが レスポンスされるようになる!
  • 18. Setup Docker Machine on VPS (demo) 実際のスクリプトを見せながらデモをします。 Incubit Inc. / MILI LLC.
  • 19. Setup lsyncd & rsync サーバー側で Docker のファイルをアップロードする場所を用意する。 ローカル側は Mac を想定。Homebrew を使ってインストールする。 プロジェクト毎に個別の設定があるはずなので、 lsyncd は別々に用意した。 Incubit Inc. / MILI LLC. $ mkdir /var/docker $ sudo chown docker:docker /var/docker $ brew install rsync lsyncd lua $ sudo lsyncd -log scarce ~/path/to/lsyncd/proxy.lua Docker Server nginx proxy service service Docker Machine System I/O rsync 各種エディタ terminal データ変更の リアルタイム反映 lsyncd System I/O
  • 20. Setup lsyncd & rsync (demo) 実際のスクリプトを見せながらデモをします。 ポイントは • rsync の待ち時間をゼロにする • docker サーバー側で使うディレクトリは lsyncd の対象から外す • アプリケーション毎に別の設定ファイルを用意する Incubit Inc. / MILI LLC.
  • 21. Setup Reverse Proxy docker-compose を使って立ち上げたサービス同士は原則として別の仮想ネットワー ク上で動作するように設計されている。 この設定だとリバースプロキシと各ウェブサービスが通信できず、リバースプロキシ での Virtual Host による参照先変更ができないため、同じネットワークを利用するよ うに変更する。 Incubit Inc. / MILI LLC. $ docker-machine ssh sakura-vps “docker network create --driver bridge shared” Docker Server 全てのサービスを shared ネットワークに 接続させる shared Network proxy service service
  • 22. Setup Reverse Proxy 実際のスクリプトを見せながらデモをします。 ポイントは • nginx-proxy を使って全ての http(s) 通信を処理する • Let‘s Encrypt を使ってSSL証明書を発行する • docker-compose.yaml にネットワークとドメイン、SSL証明書、Basic認証の情報を きちんと設定する Incubit Inc. / MILI LLC.
  • 23. Usage Evaluation 2ヶ月ほどこの環境で開発をしてみた結果のメリット/デメリット メリット • リモートワークの人やクライアント、その場にいない人に直接開発環境の状態を確認してもらえる – sudo 権限のない一般ユーザーを作成し、特定ディレクトリ以下のみアクセス権を与えるなどでセ キュリティ上の問題は大体回避できる – 心配ならVPNとかの併用も考えるとよい • 何か問題が起きた時も、サーバーログをリモートからリアルタイムで見て貰えるので作業効率が上がる – ちょっと席に来て、がなくなるので楽 • 重い処理が自分のマシンで動いていないため、手元のマシンが非力でも割となんとかなる – MacBook (メモリ8GB) でもなんとか開発できる状態になる デメリット • 地下鉄で移動中に開発できない – むしろメリットかもしれない…… • lsyncd がたまにハングアップする – TimeMachine との相性が悪いらしい。Windowsとかなら大丈夫と思われる 解決しなかった問題 • ブラウザ上で動くアプリケーションがそもそも重いパターンは割とどうしようもない – おとなしくあきらめます…… Incubit Inc. / MILI LLC.
  • 24. THANKS FOR YOUR TIME 今日の資料やソースコードは全て github.com/redmount/docker-machine-for-development や SlideShare にアップロードしますのでご自由にお使いください。 細かい部分の補足を書いたブログも公開します。そちらも是非ご確認ください! 株式会社インキュビットでは 一緒にAIやUX、WEBアプリケーションを作っていく 様々な分野のスペシャリストを募集しています。 興味のある方は是非、お声掛けください! facebook: sezutsu / twitter: szt_redmount

Editor's Notes

  1. 英語は殆ど喋れないけど、Google翻訳が優秀なのであまり苦労していない。
  2. 英語は殆ど喋れないけど、Google翻訳が優秀なのであまり苦労していない。
  3. Mac OS High Sierra で Homebrew が動かなくなったりしてたよ。 Dockerも一時期動かなかったみたいだけど Homebrew よりは依存ライブラリ少ないハズなのでそこまでクリティカルじゃない。 あと今回やる内容なら、最悪 rsync と lsyncd, ターミナルが動けばなんとかなる。
  4. Docker イメージはレイヤーになっているが、各イメージ・レイヤを別のアプリでも流用することができる。 各イメージ・レイヤ差分情報のみを記録しているため、並列ダウンロードも可能。このことがディスク容量の削減やポータビリティに貢献している。 イメージは Read Only なので、コンテナ起動時には読み書き可能なコンテナ用レイヤができあがる。
  5. 「Xen」や「Hyper-V」「KVM」などは、ハイパーバイザがハードウェア上で直接動作し、全てのOS(ゲストOS)はそのハイパーバイザ上で動作する方式(AWSとかも多分この方式)。 「VMWare」「VirtualBox」「Parallels Desktop」などは、ホストOS上で完全仮想化を行うことが目的。
  6. 例えばロードバランサ、アプリケーションサーバー2台、DBサーバー2台(マスタ-スレーブ)、キャッシュサーバー、バッチサーバー、みたいな構成でも擬似的に作成可能。 そしてイメージ・レイヤを別のアプリでも流用できるので、ディスク容量はそこまで必要としない。
  7. AWSに限らず、oAuth系は現在時刻を使って暗号化と復号化をしているので、だいたい死ぬよ。 Mac OS High Sierra で Homebrew が動かなくなったりしてたよ。 Dockerも一時期動かなかったみたいだけど Homebrew よりは依存ライブラリ少ないハズなのでそこまでクリティカルじゃない。 あと今回やる内容なら、最悪 rsync と lsyncd, ターミナルが動けばなんとかなる。
  8. Dockerのおさらいも含めて。 docker-compose使ったことあるかも確認。
  9. ここまでの前提をふまえてのゴール。
  10. 図を簡略化するために、実際の動きとは違う線を引いてるので、マサカリ投げないでね。
  11. SendGrid の「さくらのユーザー向け特別プラン」は、Freeプランの通数上限が12,000通/月 -> 25,000通/月になる。 ( https://vps-news.sakura.ad.jp/sendgrid1 ) AWS WAF(Web Application Firewall) に似たJP-Secureの「SiteGuard Lite」というサービスを無料で使うことも可能。 ( https://help.sakura.ad.jp/hc/ja/articles/115000012602 ) だいたい皆AWSだとは思うけど、さくらのクラウドを使うことも検討できるよ。
  12. 今回のプレゼンでは、VPSサーバーのセットアップ自体については細かく扱わないので、重要な箇所だけ説明します。
  13. env を上書きすると、以降は docker stop や docker restart も全て上書きされる。
  14. env を上書きすると、以降は docker stop や docker restart も全て上書きされるところをデモするつもりでした……。
  15. lsyncd の設定ファイルを見せる。
  16. ちなみに、ワンライナーで動かす方法をここでは紹介したが、実際にはサーバー上で docker を動かしてコンソールを叩きたい、みたいな要望があると思う。 その時は手元の環境ではなく、サーバー上に screen をインストールし、 screen を使ってセッションを維持できるようにすると良い。
  17. nginx-proxy でやっていることをもう少し詳細に説明するつもりでした……。(リロードとか、何故自動的にVirtualHost紐付けができるかなど)
  18. ブラウザアプリの問題は盲点すぎて心が折れた。そういえば7月までAngularJS使ってめっちゃブラウザアプリ作ってた。 今回はサーバー単体で利用する目的なのでこのような構成にしたが、複数サーバーを前提としたもので「Docker Swarm」という機能も存在しているので、複数のホスト上にコンテナが散在している場合はこれを使うと良い。 http://qiita.com/TsutomuNakamura/items/6124ab7d32a58bc93ac7