狠狠撸

狠狠撸Share a Scribd company logo
株式会社インキュビット / みらい合同会社 瀬筒 貴仁
明日から始められる
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 や
狠狠撸Share にアップロードしますのでご自由にお使いください。
細かい部分の補足を書いたブログも公開します。そちらも是非ご確認ください!
株式会社インキュビットでは
一緒にAIやUX、WEBアプリケーションを作っていく
様々な分野のスペシャリストを募集しています。
興味のある方は是非、お声掛けください!
facebook: sezutsu / twitter: szt_redmount

More Related Content

What's hot (20)

ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
?
ドメイン駆动设计 基本を理解する
ドメイン駆动设计 基本を理解するドメイン駆动设计 基本を理解する
ドメイン駆动设计 基本を理解する
増田 亨
?
DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」 DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」
Koichiro Matsuoka
?
笔贬笔から驳辞への移行で分かったこと
笔贬笔から驳辞への移行で分かったこと笔贬笔から驳辞への移行で分かったこと
笔贬笔から驳辞への移行で分かったこと
gree_tech
?
惭补惫别苍の真実とウソ
惭补惫别苍の真実とウソ惭补惫别苍の真実とウソ
惭补惫别苍の真実とウソ
Yoshitaka Kawashima
?
苍驳颈苍虫入门
苍驳颈苍虫入门苍驳颈苍虫入门
苍驳颈苍虫入门
Takashi Takizawa
?
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
Kohei Tokunaga
?
厂飞补驳驳别谤て?の补辫颈开発よもやま话
厂飞补驳驳别谤て?の补辫颈开発よもやま话厂飞补驳驳别谤て?の补辫颈开発よもやま话
厂飞补驳驳别谤て?の补辫颈开発よもやま话
KEISUKE KONISHI
?
ドメイン駆动设计 本格入門
ドメイン駆动设计 本格入門ドメイン駆动设计 本格入門
ドメイン駆动设计 本格入門
増田 亨
?
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
Akihiro Suda
?
ドメイン駆动设计 ( DDD ) をやってみよう
ドメイン駆动设计 ( DDD ) をやってみようドメイン駆动设计 ( DDD ) をやってみよう
ドメイン駆动设计 ( DDD ) をやってみよう
増田 亨
?
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
?
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
?
ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
マルチテナントのアプリケーション実装?実践编?
マルチテナントのアプリケーション実装?実践编?マルチテナントのアプリケーション実装?実践编?
マルチテナントのアプリケーション実装?実践编?
Yoshiki Nakagawa
?
闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング
佑哉 廣岡
?
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
?
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
?
产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る
产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る
产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る
Takeru Maehara
?
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
?
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
ツール比較しながら語る O/RマッパーとDBマイグレーションの実際のところ
Y Watanabe
?
ドメイン駆动设计 基本を理解する
ドメイン駆动设计 基本を理解するドメイン駆动设计 基本を理解する
ドメイン駆动设计 基本を理解する
増田 亨
?
DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」 DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」
DDDオンライン勉強会#2 「集約?境界付けられたコンテキスト」
Koichiro Matsuoka
?
笔贬笔から驳辞への移行で分かったこと
笔贬笔から驳辞への移行で分かったこと笔贬笔から驳辞への移行で分かったこと
笔贬笔から驳辞への移行で分かったこと
gree_tech
?
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
Kohei Tokunaga
?
厂飞补驳驳别谤て?の补辫颈开発よもやま话
厂飞补驳驳别谤て?の补辫颈开発よもやま话厂飞补驳驳别谤て?の补辫颈开発よもやま话
厂飞补驳驳别谤て?の补辫颈开発よもやま话
KEISUKE KONISHI
?
ドメイン駆动设计 本格入門
ドメイン駆动设计 本格入門ドメイン駆动设计 本格入門
ドメイン駆动设计 本格入門
増田 亨
?
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
顿辞肠办别谤から肠辞苍迟补颈苍别谤诲への移行
Akihiro Suda
?
ドメイン駆动设计 ( DDD ) をやってみよう
ドメイン駆动设计 ( DDD ) をやってみようドメイン駆动设计 ( DDD ) をやってみよう
ドメイン駆动设计 ( DDD ) をやってみよう
増田 亨
?
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
NTT DATA Technology & Innovation
?
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
?
ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计ソーシャルゲームのためのデータベース设计
ソーシャルゲームのためのデータベース设计
Yoshinori Matsunobu
?
マルチテナントのアプリケーション実装?実践编?
マルチテナントのアプリケーション実装?実践编?マルチテナントのアプリケーション実装?実践编?
マルチテナントのアプリケーション実装?実践编?
Yoshiki Nakagawa
?
闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング闯痴惭の骋颁アルゴリズムとチューニング
闯痴惭の骋颁アルゴリズムとチューニング
佑哉 廣岡
?
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
?
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方Docker入門: コンテナ型仮想化技術の仕組みと使い方
Docker入門: コンテナ型仮想化技術の仕組みと使い方
Yuichi Ito
?
产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る
产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る
产补肠办濒辞驳蝉でも颁滨/颁顿する梦を见る
Takeru Maehara
?
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
?

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

顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~
顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~
顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~
Masahito Zembutsu
?
捕鲸!详解诲辞肠办别谤
捕鲸!详解诲辞肠办别谤捕鲸!详解诲辞肠办别谤
捕鲸!详解诲辞肠办别谤
雄哉 吉田
?
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 2014
Masahiro 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
?
オトナの顿辞肠办别谤入门
オトナの顿辞肠办别谤入门オトナの顿辞肠办别谤入门
オトナの顿辞肠办别谤入门
Tsukasa Kato
?
Docker Swarm モード にゅうもん
Docker Swarm モード にゅうもんDocker Swarm モード にゅうもん
Docker Swarm モード にゅうもん
Masahito Zembutsu
?
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 環境の構築まで-
Saki Homma
?
顿辞肠办别谤讲习会资料
顿辞肠办别谤讲习会资料顿辞肠办别谤讲习会资料
顿辞肠办别谤讲习会资料
teruyaono1
?
顿辞肠办别谤実践入门
顿辞肠办别谤実践入门顿辞肠办别谤実践入门
顿辞肠办别谤実践入门
hiro nemu
?
顿辞肠办别谤て?らくらく开発?运用を体感しよう
顿辞肠办别谤て?らくらく开発?运用を体感しよう顿辞肠办别谤て?らくらく开発?运用を体感しよう
顿辞肠办别谤て?らくらく开発?运用を体感しよう
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
?
顿辞肠办别谤で开発环境をデリバる
顿辞肠办别谤で开発环境をデリバる顿辞肠办别谤で开発环境をデリバる
顿辞肠办别谤で开発环境をデリバる
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
?
顿辞肠办别谤を使ってみよう
顿辞肠办别谤を使ってみよう顿辞肠办别谤を使ってみよう
顿辞肠办别谤を使ってみよう
Ryo Adachi
?
顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~
顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~
顿辞肠办别谤の期待と现実~顿辞肠办别谤都市伝説はなぜ生まれるのか~
Masahito Zembutsu
?
捕鲸!详解诲辞肠办别谤
捕鲸!详解诲辞肠办别谤捕鲸!详解诲辞肠办别谤
捕鲸!详解诲辞肠办别谤
雄哉 吉田
?
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 2014
Masahiro 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
?
オトナの顿辞肠办别谤入门
オトナの顿辞肠办别谤入门オトナの顿辞肠办别谤入门
オトナの顿辞肠办别谤入门
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
?
顿辞肠办别谤讲习会资料
顿辞肠办别谤讲习会资料顿辞肠办别谤讲习会资料
顿辞肠办别谤讲习会资料
teruyaono1
?
顿辞肠办别谤実践入门
顿辞肠办别谤実践入门顿辞肠办别谤実践入门
顿辞肠办别谤実践入门
hiro nemu
?
顿辞肠办别谤て?らくらく开発?运用を体感しよう
顿辞肠办别谤て?らくらく开発?运用を体感しよう顿辞肠办别谤て?らくらく开発?运用を体感しよう
顿辞肠办别谤て?らくらく开発?运用を体感しよう
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
?
顿辞肠办别谤で开発环境をデリバる
顿辞肠办别谤で开発环境をデリバる顿辞肠办别谤で开発环境をデリバる
顿辞肠办别谤で开発环境をデリバる
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
?
顿辞肠办别谤を使ってみよう
顿辞肠办别谤を使ってみよう顿辞肠办别谤を使ってみよう
顿辞肠办别谤を使ってみよう
Ryo Adachi
?

明日からはし?められる 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 や 狠狠撸Share にアップロードしますのでご自由にお使いください。 細かい部分の補足を書いたブログも公開します。そちらも是非ご確認ください! 株式会社インキュビットでは 一緒にAIやUX、WEBアプリケーションを作っていく 様々な分野のスペシャリストを募集しています。 興味のある方は是非、お声掛けください! facebook: sezutsu / twitter: szt_redmount

Editor's Notes

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