rabbit-slide-niku-nikulog-with-docker 2015.07.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/README.md +23 -0
- data/Rakefile +17 -0
- data/config.yaml +20 -0
- data/dockerhub-automatedbuild.png +0 -0
- data/dockerhub-webhook.png +0 -0
- data/github-webhook.png +0 -0
- data/nikulog-with-docker.md +364 -0
- data/pdf/nikulog-with-docker-nikulog-with-docker.pdf +0 -0
- data//343/203/275/357/274/210/302/264/343/203/273/350/202/211/343/203/273/357/275/200/357/274/211/343/203/216/343/203/255/343/202/260/343/201/250Docker.pdf +0 -0
- metadata +68 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 57319379cf37468ad8a097f5226b3134d59ad692
|
4
|
+
data.tar.gz: cf35956a152c68a31c7963354009dff3dddad027
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 58e947e66f7c21b02e362c1bed0d18df11a8553e73928e3f4a57f505c19bfe1f166a9f75247cc1981083258f0c8ab7c808555b4b6bd31e21bc4f671dc7dfbfc1
|
7
|
+
data.tar.gz: 0514dc468c7603b56c6d0015b9e237cb5196cc0db6cfc5016fcfd0bdd7733bc9ce772b389e38d0ea658a5c648b3b63a02dc7aa7d254b495727bb1d7430820f81
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
nikulog-with-docker.md
|
data/README.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# ヽ(´・肉・`)ノログとDocker
|
2
|
+
|
3
|
+
[Infrastructure as Code Casual 札幌 #0](http://infracode-sapporo.connpass.com/event/16476/)で発表した資料
|
4
|
+
|
5
|
+
## 作者向け
|
6
|
+
|
7
|
+
### 表示
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
### 公開
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
## 閲覧者向け
|
16
|
+
|
17
|
+
### インストール
|
18
|
+
|
19
|
+
gem install rabbit-slide-niku-nikulog-with-docker
|
20
|
+
|
21
|
+
### 表示
|
22
|
+
|
23
|
+
rabbit rabbit-slide-niku-nikulog-with-docker.gem
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
# spec.add_runtime_dependency("YOUR THEME")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
data/config.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
id: nikulog-with-docker
|
3
|
+
base_name: nikulog-with-docker
|
4
|
+
tags:
|
5
|
+
- docker
|
6
|
+
presentation_date: 2015/07/10
|
7
|
+
version: 2015.07.10
|
8
|
+
licenses: [MIT]
|
9
|
+
slideshare_id:
|
10
|
+
speaker_deck_id:
|
11
|
+
ustream_id:
|
12
|
+
vimeo_id:
|
13
|
+
youtube_id:
|
14
|
+
author:
|
15
|
+
markup_language: :markdown
|
16
|
+
name: niku
|
17
|
+
email: niku@niku.name
|
18
|
+
rubygems_user: niku
|
19
|
+
slideshare_user:
|
20
|
+
speaker_deck_user: niku
|
Binary file
|
Binary file
|
data/github-webhook.png
ADDED
Binary file
|
@@ -0,0 +1,364 @@
|
|
1
|
+
# ヽ(´・肉・`)ノログとDocker
|
2
|
+
|
3
|
+
author
|
4
|
+
niku
|
5
|
+
date
|
6
|
+
2015/07/10
|
7
|
+
allotted-time
|
8
|
+
15m
|
9
|
+
|
10
|
+
# タイトルずれました
|
11
|
+
|
12
|
+
∧_∧ ミ ギャハッハッ ズレてる!ズレてる!
|
13
|
+
o/⌒(. ;´∀`)つ
|
14
|
+
と_)__つノ ☆ バンバン
|
15
|
+
|
16
|
+
∧_∧
|
17
|
+
o/⌒(゜Д゜ )つ
|
18
|
+
と_)__つノ
|
19
|
+
|
20
|
+
∧_∧
|
21
|
+
o/⌒( ゚д゚ )つ
|
22
|
+
と_)__つノ
|
23
|
+
|
24
|
+
# 自己紹介
|
25
|
+
|
26
|
+
- にく
|
27
|
+
- I like
|
28
|
+
- コンサドーレ札幌
|
29
|
+
- Emacs
|
30
|
+
- Ruby
|
31
|
+
- Elixir/Phoenix
|
32
|
+
|
33
|
+
# 自己紹介
|
34
|
+
|
35
|
+
- github_id :: niku
|
36
|
+
- twitter_id :: niku_name
|
37
|
+
- web :: http://niku.name/
|
38
|
+
|
39
|
+
# 今日話すこと
|
40
|
+
|
41
|
+
- http://niku.name/
|
42
|
+
- どうやって表示しているか
|
43
|
+
- どうやってコンテンツ更新しているか
|
44
|
+
|
45
|
+
# どうやって表示しているか
|
46
|
+
|
47
|
+
構成 : Debian - Apache - Rack - 独自アプリケーション nwiki - コンテンツ nikulog
|
48
|
+
|
49
|
+
- Apache Webサーバー
|
50
|
+
- Rack サーバーとアプリケーションを繋ぐミドルウェア
|
51
|
+
- nwiki git のファイルの内容を web に表示する
|
52
|
+
- nikulog コンテンツ(git管理)
|
53
|
+
|
54
|
+
# つらみ
|
55
|
+
|
56
|
+
- アプリケーション開発者にとっての趣味サーバー管理
|
57
|
+
- サーバー管理者にとっての趣味アプリケーション開発(?)
|
58
|
+
- 「これ,どうやるんだったっけ……」
|
59
|
+
|
60
|
+
# つらみ
|
61
|
+
|
62
|
+
- 知識としてはある
|
63
|
+
- たまにしかやらないので毎回調べるはめになる
|
64
|
+
- [apache 設定 やり方] [検索]
|
65
|
+
|
66
|
+
# つらみ対策
|
67
|
+
|
68
|
+
プロビジョニングツール
|
69
|
+
|
70
|
+
- chef / itamae レシピ書けます
|
71
|
+
- いいものだ
|
72
|
+
- (僕は)サーバー管理の手数を減らしたい
|
73
|
+
- 選定や知識のアップグレードの時間を投資し続けることができるだろうか?
|
74
|
+
|
75
|
+
# つらみ対策
|
76
|
+
|
77
|
+
わかれていると管理しやすいのでは
|
78
|
+
|
79
|
+
- ミニマム構成のサーバー部分
|
80
|
+
- 穴が少ない
|
81
|
+
- 気軽にアップデートでき,動作検証しやすいアプリケーション
|
82
|
+
|
83
|
+
# つらみ対策
|
84
|
+
|
85
|
+
- ミニマム構成のサーバー => Docker だけインストールした Debian
|
86
|
+
- 気軽にアップデートでき,動作検証しやすいアプリケーション => Dockerイメージ
|
87
|
+
|
88
|
+
# Dockerイメージを載せるサーバー
|
89
|
+
|
90
|
+
さくらVPSにDebian8をインストールして,コマンドを手で打ちました
|
91
|
+
|
92
|
+
$ sudo update-locale LANG=C.UTF-8
|
93
|
+
$ sudo sh -c "echo 'deb http://ftp.jp.debian.org/debian jessie-backports main' \
|
94
|
+
> /etc/apt/sources.list.d/jessie-backports.list"
|
95
|
+
$ sudo apt-get update
|
96
|
+
$ sudo apt-get install -y docker.io
|
97
|
+
|
98
|
+
# Docker
|
99
|
+
|
100
|
+
構成 : Debian - Apache - Rack - 独自アプリケーション nwiki - コンテンツ nikulog
|
101
|
+
|
102
|
+
# Docker
|
103
|
+
|
104
|
+
構成 : Debian - Apache - Rack - 独自アプリケーション nwiki - コンテンツ nikulog
|
105
|
+
: | |
|
106
|
+
Docker : niku/debian | niku/nwiki | niku/nikulog
|
107
|
+
|
108
|
+
# niku/debian
|
109
|
+
|
110
|
+
- PackerでOSイメージを自分で作る方法を知っていた
|
111
|
+
- Packerを使ってVagrantのBoxを作る方法を一つずつ説明する - ヽ(´・肉・`)ノログ
|
112
|
+
- (URL長くて入らなかった)
|
113
|
+
|
114
|
+
# niku/debian
|
115
|
+
|
116
|
+
OS イメージ作成,サーバー起動,サーバーログイン
|
117
|
+
|
118
|
+
% git clone https://github.com/niku/uti.git
|
119
|
+
% cd uti/share/lib/server/host/
|
120
|
+
uti/share/lib/server/host% packer build jessie64.json
|
121
|
+
uti/share/lib/server/host% vagrant up
|
122
|
+
uti/share/lib/server/host% vagrant ssh
|
123
|
+
|
124
|
+
# niku/debian
|
125
|
+
|
126
|
+
Debianサーバー内でDockerイメージ生成,DockerHubへpush
|
127
|
+
|
128
|
+
$ uname -a
|
129
|
+
Linux packer-virtualbox-iso-1430355314 3.16.0-4-amd64 #1 SMP \
|
130
|
+
Debian 3.16.7-ckt9-3~deb8u1 (2015-04-24) x86_64 GNU/Linux
|
131
|
+
$ cat /etc/debian_version
|
132
|
+
8.0
|
133
|
+
$ sudo sh -c 'echo "deb http://ftp.jp.debian.org/debian sid main" > /etc/apt/sources.list.d/sid.list'
|
134
|
+
$ sudo apt-get update
|
135
|
+
$ sudo apt-get install -y docker.io git debootstrap
|
136
|
+
$ git clone https://github.com/docker/docker.git
|
137
|
+
$ sudo docker/contrib/mkimage.sh \
|
138
|
+
--dir debian-image \
|
139
|
+
--tag niku/debian \
|
140
|
+
debootstrap --variant=minbase \
|
141
|
+
jessie http://ftp.jp.debian.org/debian
|
142
|
+
$ cd debian-image
|
143
|
+
$ sudo docker login --username="niku" --email="my_email_address@example.com" --password="my_password"
|
144
|
+
$ sudo docker push niku/debian
|
145
|
+
|
146
|
+
# niku/nwiki
|
147
|
+
|
148
|
+
AutomatedBuild
|
149
|
+
|
150
|
+
- Github リポジトリを更新
|
151
|
+
- Github から Dockerhub へ Webhook でおしらせ
|
152
|
+
- Dockerhub が Dockerfile を元に Docker イメージをビルド
|
153
|
+
|
154
|
+
# niku/nwiki
|
155
|
+
|
156
|
+
やりかた
|
157
|
+
|
158
|
+
- Dockerfile のある github リポジトリを Dockerhub に AutomatedBuild で登録
|
159
|
+
|
160
|
+
{:relative_height="100"}
|
161
|
+
|
162
|
+
# niku/nwiki
|
163
|
+
|
164
|
+
やりかた
|
165
|
+
|
166
|
+
- github の webhook に Dockerhub を指定
|
167
|
+
|
168
|
+
{:relative_height="100"}
|
169
|
+
|
170
|
+
# niku/nwiki
|
171
|
+
|
172
|
+
nwiki/Dockerfile
|
173
|
+
|
174
|
+
FROM niku/debian
|
175
|
+
MAINTAINER niku
|
176
|
+
|
177
|
+
RUN apt-get update && \
|
178
|
+
apt-get -y install build-essential \
|
179
|
+
ruby2.1-dev \
|
180
|
+
cmake \
|
181
|
+
pkg-config \
|
182
|
+
git \
|
183
|
+
apache2 \
|
184
|
+
libapache2-mod-passenger && \
|
185
|
+
echo "(設定ファイルの内容)" > /etc/apache2/sites-available/nwiki.conf && \
|
186
|
+
a2dissite 000-default && \
|
187
|
+
a2ensite nwiki && \
|
188
|
+
git clone https://github.com/niku/nwiki.git /var/www/nwiki && \
|
189
|
+
cd /var/www/nwiki && gem install bundler && bundle install
|
190
|
+
|
191
|
+
EXPOSE 80 443
|
192
|
+
CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
|
193
|
+
|
194
|
+
# niku/nikulog
|
195
|
+
|
196
|
+
同様にAutomatedBuildを利用
|
197
|
+
|
198
|
+
# niku/nikulog
|
199
|
+
|
200
|
+
nikulog/Dockerfile
|
201
|
+
|
202
|
+
FROM niku/nwiki
|
203
|
+
MAINTAINER niku
|
204
|
+
|
205
|
+
RUN git clone https://github.com/niku/nikulog /var/www/nikulog && \
|
206
|
+
cd /var/www/nikulog && \
|
207
|
+
git checkout config && \
|
208
|
+
git checkout master && \
|
209
|
+
git fetch && \
|
210
|
+
git reset --hard origin/master && \
|
211
|
+
echo "(設定ファイルの内容)" > /var/www/nwiki/config.ru && \
|
212
|
+
mkdir -p /var/www/nikulog/tmp && \
|
213
|
+
touch /var/www/nikulog/tmp/restart.txt
|
214
|
+
|
215
|
+
# サーバーとイメージ準備完了
|
216
|
+
|
217
|
+
$ sudo docker pull niku/nikulog:latest
|
218
|
+
$ sudo docker run --publish 80:80 --name nikulog -d niku/nikulog
|
219
|
+
|
220
|
+
で表示できるようになった (^o^)/
|
221
|
+
|
222
|
+
# niku.name 更新のしくみ
|
223
|
+
|
224
|
+
更新は? ∑(゚□゚;)
|
225
|
+
|
226
|
+
# niku.name 更新のしくみ
|
227
|
+
|
228
|
+
Docker導入以前
|
229
|
+
|
230
|
+
git
|
231
|
+
|
|
232
|
+
| Push
|
233
|
+
|
|
234
|
+
niku.nameのgit
|
235
|
+
|
|
236
|
+
| gitのhookスクリプト
|
237
|
+
|
|
238
|
+
github (niku/nikulog)
|
239
|
+
|
240
|
+
|
241
|
+
# niku.name 更新のしくみ
|
242
|
+
|
243
|
+
参考にした
|
244
|
+
|
245
|
+
- DockerHubのAutomated Buildsをフックして最新のDockerコンテナをデプロイする | SOTA
|
246
|
+
- http://deeeet.com/writing/2015/01/08/dockerhub-hook/
|
247
|
+
|
248
|
+
# niku.name 更新のしくみ
|
249
|
+
|
250
|
+
Docker導入後
|
251
|
+
|
252
|
+
git
|
253
|
+
|
|
254
|
+
| Push
|
255
|
+
|
|
256
|
+
github (niku/nikulog)
|
257
|
+
|
|
258
|
+
| githubのWebhook
|
259
|
+
|
|
260
|
+
Dockerhub (niku/nikulog)
|
261
|
+
|
|
262
|
+
| DockerimageのAutomatedBuild
|
263
|
+
| DockerhubのWebhook
|
264
|
+
|
|
265
|
+
niku.nameのとあるポート
|
266
|
+
|
|
267
|
+
| (docker pull して再起動)
|
268
|
+
|
|
269
|
+
niku/nikulog 最新のdocker
|
270
|
+
|
271
|
+
# niku.name 更新待受
|
272
|
+
|
273
|
+
{:relative_height="100"}
|
274
|
+
|
275
|
+
# niku.name 更新待受
|
276
|
+
|
277
|
+
Webhook待受サーバー
|
278
|
+
|
279
|
+
- bketelsen/captainhook
|
280
|
+
- https://github.com/bketelsen/captainhook
|
281
|
+
- HTTPリクエストがくると設定したjsonのとおりにコマンドを実行する
|
282
|
+
|
283
|
+
# niku.name 更新待受
|
284
|
+
|
285
|
+
サーバーに追加でアプリケーションを入れたくない
|
286
|
+
|
287
|
+
- niku/yobirinex
|
288
|
+
- https://github.com/niku/yobirinex
|
289
|
+
- 実行環境(ErlangVM)も同梱できるのでtarファイル展開した以下で完結する
|
290
|
+
|
291
|
+
# niku.name 更新待受
|
292
|
+
|
293
|
+
ErlangVM同梱HTTPサーバーの作りかた
|
294
|
+
|
295
|
+
- ElixirでHTTPのやりとりをする
|
296
|
+
- http://niku.name/articles/2015/07/03/Elixir%E3%81%A7HTTP%E3%81%AE%E3%82%84%E3%82%8A%E3%81%A8%E3%82%8A%E3%82%92%E3%81%99%E3%82%8B
|
297
|
+
|
298
|
+
# niku.name 更新待受
|
299
|
+
|
300
|
+
更新用設定ファイル
|
301
|
+
|
302
|
+
% cat configdir/refresh-nikulog.json
|
303
|
+
{
|
304
|
+
"scripts": [
|
305
|
+
{
|
306
|
+
"command": "sudo",
|
307
|
+
"args": ["docker", "pull", "niku/nikulog:latest"]
|
308
|
+
},
|
309
|
+
{
|
310
|
+
"command": "sudo",
|
311
|
+
"args": ["docker", "kill", "nikulog"]
|
312
|
+
},
|
313
|
+
{
|
314
|
+
"command": "sudo",
|
315
|
+
"args": ["docker", "rm", "nikulog"]
|
316
|
+
},
|
317
|
+
{
|
318
|
+
"command": "sudo",
|
319
|
+
"args": ["docker", "run", "--publish", "80:80", "--name", "nikulog", "-d", "niku/nikulog"]
|
320
|
+
}
|
321
|
+
]
|
322
|
+
}
|
323
|
+
|
324
|
+
# niku.name 更新待受
|
325
|
+
|
326
|
+
git
|
327
|
+
|
|
328
|
+
| Push
|
329
|
+
|
|
330
|
+
github (niku/nikulog)
|
331
|
+
|
|
332
|
+
| githubのWebhook
|
333
|
+
|
|
334
|
+
Dockerhub
|
335
|
+
|
|
336
|
+
| DockerimageのAutomatedBuild
|
337
|
+
| DockerhubのWebhook
|
338
|
+
|
|
339
|
+
niku.nameのとあるポート
|
340
|
+
|
|
341
|
+
| (docker pull して再起動)
|
342
|
+
|
|
343
|
+
niku/nikulog 最新のdocker
|
344
|
+
|
345
|
+
# その他/話せなかったこと1
|
346
|
+
|
347
|
+
- Dockerhub のビルド遅くて数分から十数分待つことがある.急いでないので別に問題にしていない
|
348
|
+
- Webhook飛んでこないことある.Dockerhubならwebから手動でビルド,niku.nameならローカルからcurlでリクエストしてる
|
349
|
+
|
350
|
+
# その他/話せなかったこと2
|
351
|
+
|
352
|
+
- docker-compose使ってない.Vagrant の docker プロビジョンでまだ対応していない
|
353
|
+
- Vagrant から Docker を使ったときの docker exec デバッグのやりかたを書きたかったけど時間なかった
|
354
|
+
- PackerでイメージつくるときのDEBCONF_DEBUG=5の有用さ
|
355
|
+
|
356
|
+
# まとめ
|
357
|
+
|
358
|
+
- niku.nameの表示
|
359
|
+
- Dockerイメージ
|
360
|
+
- niku.nameの更新
|
361
|
+
- GithubのWebhook
|
362
|
+
- DockerHubのAutomatedBuild
|
363
|
+
- DockerHubのWebhook
|
364
|
+
- 独自Webhook待受サーバー
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-niku-nikulog-with-docker
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2015.07.10
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- niku
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rabbit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.0.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.2
|
27
|
+
description: "[Infrastructure as Code Casual 札幌 #0](http://infracode-sapporo.connpass.com/event/16476/)で発表した資料"
|
28
|
+
email:
|
29
|
+
- niku@niku.name
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- ".rabbit"
|
35
|
+
- README.md
|
36
|
+
- Rakefile
|
37
|
+
- config.yaml
|
38
|
+
- dockerhub-automatedbuild.png
|
39
|
+
- dockerhub-webhook.png
|
40
|
+
- github-webhook.png
|
41
|
+
- nikulog-with-docker.md
|
42
|
+
- pdf/nikulog-with-docker-nikulog-with-docker.pdf
|
43
|
+
- "ヽ(´・肉・`)ノログとDocker.pdf"
|
44
|
+
homepage: http://slide.rabbit-shocker.org/authors/niku/nikulog-with-docker/
|
45
|
+
licenses:
|
46
|
+
- MIT
|
47
|
+
metadata: {}
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubyforge_project:
|
64
|
+
rubygems_version: 2.4.5
|
65
|
+
signing_key:
|
66
|
+
specification_version: 4
|
67
|
+
summary: "ヽ(´・肉・`)ノログとDocker"
|
68
|
+
test_files: []
|