2015年12月26日土曜日

Ubuntu14.04にdokkuインストールしてみました

  • このエントリーをはてなブックマークに追加


 

ubuntu14にdokkuをインストールしてみました。dokkuは今ubuntuしか対応しないようです。

手順はすごく簡単です。社内プロキシ環境の場合は、ファイルダウンロードなど制限されている可能性もあります。その時に正常にインストール出来ないこともあります。

●install shellダウンロード。現時点で最新バージョンは0.4.6になっています。必要に応じて最新バージョンを書き換えてください。

●install shell 実行。dockerも含めてインストールしてくれます。既にdockerインストール済みの場合は、シェルの中でスキップしてくれます。

root@ubuntu14:~# sudo DOKKU_TAG=v0.4.6 bash bootstrap.sh

Preparing to install v0.4.6 from https://github.com/dokku/dokku.git...

--> Initial apt-get update

herokuish (0.3.5) を設定しています ...

Importing herokuish into docker (around 5 minutes)

--> Installing docker

2015-12-19 00:45:41 URL:https://get.docker.com/ [12865/12865] -> "-" [1]

Warning: the "docker" command appears to already exist on this system.

If you already have Docker installed, this script can cause trouble, which is

why we're displaying this warning and provide the opportunity to cancel the

installation.

If you installed the current Docker package using this script and are using it

again to update Docker, you can safely ignore this message.

You may press Ctrl+C now to abort this script.

+ sleep 20

apparmor is enabled in the kernel and apparmor utils were already installed

+ sh -c apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --homedir /tmp/tmp.fGRmeFnz8G --no-auto-check-trustdb --trust-model always --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

gpg: 鍵2C52609Dをhkpからサーバーp80.pool.sks-keyservers.netに要求

gpg: 鍵2C52609D:“Docker Release Tool (releasedocker) <docker@docker.com>”変更なし

gpg: 処理数の合計: 1

gpg: 変更なし: 1

+ sh -c mkdir -p /etc/apt/sources.list.d

+ sh -c echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list

+ sh -c sleep 3; apt-get update; apt-get install -y -q docker-engine

無視 http://jp.archive.ubuntu.com trusty InRelease

ヒット http://jp.archive.ubuntu.com trusty-updates InRelease

ヒット http://jp.archive.ubuntu.com trusty-backports InRelease

ヒット http://jp.archive.ubuntu.com trusty Release.gpg

ヒット http://jp.archive.ubuntu.com trusty-updates/main Sources

ヒット http://jp.archive.ubuntu.com trusty-updates/restricted Sources

ヒット http://jp.archive.ubuntu.com trusty-updates/universe Sources

ヒット http://jp.archive.ubuntu.com trusty-updates/multiverse Sources

ヒット http://jp.archive.ubuntu.com trusty-updates/main amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/restricted amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/universe amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/multiverse amd64 Packages

取得:1 https://apt.dockerproject.org ubuntu-trusty InRelease

無視 https://apt.dockerproject.org ubuntu-trusty InRelease

ヒット https://apt.dockerproject.org ubuntu-trusty Release.gpg

ヒット https://apt.dockerproject.org ubuntu-trusty Release

ヒット https://apt.dockerproject.org ubuntu-trusty/main amd64 Packages

ヒット http://security.ubuntu.com trusty-security InRelease

ヒット http://jp.archive.ubuntu.com trusty-updates/main i386 Packages

ヒット https://apt.dockerproject.org ubuntu-trusty/main i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/restricted i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/universe i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/multiverse i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-updates/main Translation-en

ヒット http://jp.archive.ubuntu.com trusty-updates/multiverse Translation-en

取得:2 https://apt.dockerproject.org ubuntu-trusty/main Translation-ja_JP

ヒット http://security.ubuntu.com trusty-security/main Sources

ヒット http://jp.archive.ubuntu.com trusty-updates/restricted Translation-en

ヒット http://jp.archive.ubuntu.com trusty-updates/universe Translation-en

ヒット http://jp.archive.ubuntu.com trusty Release

ヒット http://jp.archive.ubuntu.com trusty-backports/main Sources

ヒット http://jp.archive.ubuntu.com trusty-backports/restricted Sources

ヒット http://jp.archive.ubuntu.com trusty-backports/universe Sources

ヒット http://security.ubuntu.com trusty-security/restricted Sources

ヒット http://jp.archive.ubuntu.com trusty-backports/multiverse Sources

ヒット http://jp.archive.ubuntu.com trusty-backports/main amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/restricted amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/universe amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/multiverse amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/main i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/restricted i386 Packages

ヒット http://security.ubuntu.com trusty-security/universe Sources

ヒット http://jp.archive.ubuntu.com trusty-backports/universe i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/multiverse i386 Packages

ヒット http://jp.archive.ubuntu.com trusty-backports/main Translation-en

ヒット http://jp.archive.ubuntu.com trusty-backports/multiverse Translation-en

ヒット http://jp.archive.ubuntu.com trusty-backports/restricted Translation-en

ヒット http://security.ubuntu.com trusty-security/multiverse Sources

ヒット http://jp.archive.ubuntu.com trusty-backports/universe Translation-en

ヒット http://jp.archive.ubuntu.com trusty/main Sources

ヒット http://jp.archive.ubuntu.com trusty/restricted Sources

ヒット http://jp.archive.ubuntu.com trusty/universe Sources

ヒット http://jp.archive.ubuntu.com trusty/multiverse Sources

ヒット http://jp.archive.ubuntu.com trusty/main amd64 Packages

ヒット http://security.ubuntu.com trusty-security/main amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/restricted amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/universe amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/multiverse amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/main i386 Packages

ヒット http://jp.archive.ubuntu.com trusty/restricted i386 Packages

ヒット http://jp.archive.ubuntu.com trusty/universe i386 Packages

ヒット http://jp.archive.ubuntu.com trusty/multiverse i386 Packages

ヒット http://security.ubuntu.com trusty-security/restricted amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/main Translation-ja

ヒット https://packagecloud.io trusty InRelease

ヒット http://jp.archive.ubuntu.com trusty/main Translation-en

ヒット http://jp.archive.ubuntu.com trusty/multiverse Translation-ja

ヒット http://security.ubuntu.com trusty-security/universe amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/multiverse Translation-en

ヒット http://jp.archive.ubuntu.com trusty/restricted Translation-ja

ヒット http://jp.archive.ubuntu.com trusty/restricted Translation-en

ヒット http://jp.archive.ubuntu.com trusty/universe Translation-ja

ヒット http://security.ubuntu.com trusty-security/multiverse amd64 Packages

ヒット http://jp.archive.ubuntu.com trusty/universe Translation-en

ヒット https://packagecloud.io trusty/main amd64 Packages

ヒット http://security.ubuntu.com trusty-security/main i386 Packages

ヒット http://security.ubuntu.com trusty-security/restricted i386 Packages

無視 http://jp.archive.ubuntu.com trusty/main Translation-ja_JP

無視 http://jp.archive.ubuntu.com trusty/multiverse Translation-ja_JP

無視 http://jp.archive.ubuntu.com trusty/restricted Translation-ja_JP

ヒット https://packagecloud.io trusty/main i386 Packages

無視 http://jp.archive.ubuntu.com trusty/universe Translation-ja_JP

ヒット http://security.ubuntu.com trusty-security/universe i386 Packages

取得:3 https://packagecloud.io trusty/main Translation-ja_JP

ヒット http://security.ubuntu.com trusty-security/multiverse i386 Packages

ヒット http://security.ubuntu.com trusty-security/main Translation-en

ヒット http://security.ubuntu.com trusty-security/multiverse Translation-en

ヒット http://security.ubuntu.com trusty-security/restricted Translation-en

無視 https://apt.dockerproject.org ubuntu-trusty/main Translation-ja_JP

ヒット http://security.ubuntu.com trusty-security/universe Translation-en

無視 https://apt.dockerproject.org ubuntu-trusty/main Translation-ja

無視 https://packagecloud.io trusty/main Translation-ja_JP

無視 https://packagecloud.io trusty/main Translation-ja

無視 https://apt.dockerproject.org ubuntu-trusty/main Translation-en

無視 https://packagecloud.io trusty/main Translation-en

パッケージリストを読み込んでいます... 完了

パッケージリストを読み込んでいます...

依存関係ツリーを作成しています...

状態情報を読み取っています...

docker-engine は既に最新バージョンです。

アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 87 個。

+ sh -c docker version

Client:

Version: 1.9.1

API version: 1.21

Go version: go1.4.2

Git commit: a34a1d5

Built: Fri Nov 20 13:12:04 UTC 2015

OS/Arch: linux/amd64

Server:

Version: 1.9.1

API version: 1.21

Go version: go1.4.2

Git commit: a34a1d5

Built: Fri Nov 20 13:12:04 UTC 2015

OS/Arch: linux/amd64

If you would like to use Docker as a non-root user, you should now consider

adding your user to the "docker" group with something like:

sudo usermod -aG docker your-user

Remember that you will have to log out and back in for this to take effect!

--> Installing dokku

2015-12-19 00:46:13 URL:https://packagecloud.io/gpg.key [3889/3889] -> "-" [1]

OK

deb https://packagecloud.io/dokku/dokku/ubuntu/ trusty main

パッケージリストを読み込んでいます... 完了

依存関係ツリーを作成しています

状態情報を読み取っています... 完了

dokku は既に最新バージョンです。

アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 87 個。

(データベースを読み込んでいます ... 現在 63603 個のファイルとディレクトリがインストールされています。)

Preparing to unpack .../software-properties-common_0.92.37.6_all.deb ...

Unpacking software-properties-common (0.92.37.6) over (0.92.37.3) ...

Preparing to unpack .../python3-software-properties_0.92.37.6_all.deb ...

Unpacking python3-software-properties (0.92.37.6) over (0.92.37.3) ...

Processing triggers for man-db (2.6.7.1-1ubuntu1) ...

python3-software-properties (0.92.37.6) を設定しています ...

software-properties-common (0.92.37.6) を設定しています ...

gpg: 鍵輪「/tmp/tmpwcgbpwbu/secring.gpg」ができました

gpg: 鍵輪「/tmp/tmpwcgbpwbu/pubring.gpg」ができました

gpg: 鍵C300EE8Cをhkpからサーバーkeyserver.ubuntu.comに要求

gpg: /tmp/tmpwcgbpwbu/trustdb.gpg: 信用データベースができました

gpg: 鍵C300EE8C: 公開鍵“Launchpad Stable”を読み込みました

gpg: 絶対的に信用する鍵が見つかりません

gpg: 処理数の合計: 1

gpg: 読込み: 1 (RSA: 1)

OK

(データベースを読み込んでいます ... 現在 63603 個のファイルとディレクトリがインストールされています。)

Preparing to unpack .../nginx_1.8.0-1+trusty1_all.deb ...

Unpacking nginx (1.8.0-1+trusty1) over (1.4.6-1ubuntu3.3) ...

(データベースを読み込んでいます ... 現在 63601 個のファイルとディレクトリがインストールされています。)

Removing nginx-core (1.4.6-1ubuntu3.3) ...

(データベースを読み込んでいます ... 現在 63595 個のファイルとディレクトリがインストールされています。)

Preparing to unpack .../nginx-common_1.8.0-1+trusty1_all.deb ...

Moving obsolete conffile /etc/nginx/naxsi.rules out of the way...

Moving obsolete conffile /etc/nginx/naxsi_core.rules out of the way...

Moving obsolete conffile /etc/nginx/naxsi-ui.conf.1.4.1 out of the way...

Unpacking nginx-common (1.8.0-1+trusty1) over (1.4.6-1ubuntu3.3) ...

以前に未選択のパッケージ nginx-full を選択しています。

Preparing to unpack .../nginx-full_1.8.0-1+trusty1_amd64.deb ...

Unpacking nginx-full (1.8.0-1+trusty1) ...

Preparing to unpack .../bind9-host_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking bind9-host (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Preparing to unpack .../dnsutils_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking dnsutils (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Preparing to unpack .../libisc95_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking libisc95 (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Preparing to unpack .../libdns100_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking libdns100 (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Preparing to unpack .../libisccfg90_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking libisccfg90 (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Preparing to unpack .../liblwres90_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking liblwres90 (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Preparing to unpack .../libbind9-90_1%3a9.9.5.dfsg-3ubuntu0.6_amd64.deb ...

Unpacking libbind9-90 (1:9.9.5.dfsg-3ubuntu0.6) over (1:9.9.5.dfsg-3ubuntu0.4) ...

Processing triggers for man-db (2.6.7.1-1ubuntu1) ...

Processing triggers for ureadahead (0.100.0-16) ...

Processing triggers for ufw (0.34~rc-0ubuntu2) ...

nginx-common (1.8.0-1+trusty1) を設定しています ...

設定ファイル /etc/default/nginx を新規にインストールしています ...

設定ファイル /etc/logrotate.d/nginx を新規にインストールしています ...

設定ファイル /etc/init.d/nginx を新規にインストールしています ...

設定ファイル /etc/nginx/uwsgi_params を新規にインストールしています ...

設定ファイル /etc/nginx/scgi_params を新規にインストールしています ...

設定ファイル /etc/nginx/koi-utf を新規にインストールしています ...

設定ファイル /etc/nginx/koi-win を新規にインストールしています ...

設定ファイル /etc/nginx/mime.types を新規にインストールしています ...

設定ファイル /etc/nginx/nginx.conf を新規にインストールしています ...

設定ファイル /etc/nginx/sites-available/default を新規にインストールしています ...

設定ファイル /etc/nginx/fastcgi_params を新規にインストールしています ...

Removing obsolete conffile /etc/nginx/naxsi.rules ...

Removing obsolete conffile /etc/nginx/naxsi_core.rules ...

Removing obsolete conffile /etc/nginx/naxsi-ui.conf.1.4.1 ...

libisc95 (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

libdns100 (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

libisccfg90 (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

libbind9-90 (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

liblwres90 (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

bind9-host (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

dnsutils (1:9.9.5.dfsg-3ubuntu0.6) を設定しています ...

Processing triggers for ureadahead (0.100.0-16) ...

nginx-full (1.8.0-1+trusty1) を設定しています ...

nginx start/running, process 16840

nginx (1.8.0-1+trusty1) を設定しています ...

Processing triggers for libc-bin (2.19-0ubuntu6.6) ...

 

●インストール確認。docker imagesコマンドで確認し、2つのイメージが追加されていることが確認できます。

root@ubuntu14:~# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

gliderlabs/herokuish latest 998d64a151b5 About a minute ago 1.29 GB

heroku/cedar 14 56b31ddc05ad 3 weeks ago 1.267 GB

●公開鍵とホスト名設定。インストール完了したら、公開鍵とホスト名設定をします。ここのホスト名はOSのホスト名ではなく、dokkuで使う名前になります。IP, FQDNを指定できます。dokkuのコンテナにアクセスするときに、このホスト名を使います。例えば(http://<ip>: port   or http://a.b.com: port)。

設定は、コマンドやブラウザでできます。

・コマンドの場合

公開鍵生成

root@ubuntu14:~# ssh-keygen

公開鍵をdokkuというユーザーの.ssh/authorized_keysにコピー

root@ubuntu14:~# cat ~/.ssh/id_rsa.pub | sshcommand acl-add dokku

root@ubuntu14:/home/dokku/.ssh# cat authorized_keys

command="FINGERPRINT=b4:02:1a:ca:02:02:b5:4e:9f:6b:21:66:44:1e:8b:a9 NAME=admin `cat /home/dokku/.sshcommand` $SSH_ORIGINAL_COMMAND",no-agent-forwarding,no-user-rc,no-X11-forwarding,no-port-forwarding ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAkZLloUYN6T***== rsa-key-20151201

 

ホスト名設定 vi /home/dokku/HOSTNAMEを編集する

・ブラウザの場合。public keyとhostnameを入れて「Finish Setup」をクリックするだけですみます。

image_thumb4[4]

これでインストールと設定が完了です。

●アプリデプロイ

dokkuを使ってアプリのデプロイを実施できます。今回はnode jsのアプリを例にしてみます。github上のnode-js-sampleというサンプルです。ご自分のgithubアカウントにForkして、使ってください。

https://github.com/heroku/node-js-sample

 

概ねのコマンドは以下の様な感じです。git cloneして、remote レポジトリ追加し、git push するだけです。ご自分のレポジトリを書き換えてください。

git clone git@github.com:c-ye/node-js-sample.git

cd node-js-sample/

git remote add dokku dokku@192.168.80.134:node-js-app

git push dokku master

git push 実行したら、出力の最後にアクセスURLが表示されます。

root@ubuntu14:~/node-js-sample# git push dokku master

Counting objects: 406, done.

Compressing objects: 100% (319/319), done.

Writing objects: 100% (406/406), 215.62 KiB | 0 bytes/s, done.

Total 406 (delta 57), reused 406 (delta 57)

-----> Cleaning up...

-----> Building node-js-app from herokuish...

-----> Setting config vars

CURL_CONNECT_TIMEOUT: 5

-----> Setting config vars

CURL_TIMEOUT: 30

-----> Adding BUILD_ENV to build environment...

-----> Node.js app detected

-----> Creating runtime environment

NPM_CONFIG_LOGLEVEL=error

NPM_CONFIG_PRODUCTION=true

NODE_ENV=production

NODE_MODULES_CACHE=true

-----> Installing binaries

engines.node (package.json): 4.0.0

engines.npm (package.json): unspecified (use default)

Downloading and installing node 4.0.0...

Using default npm version: 2.14.2

-----> Restoring cache

Skipping cache restore (new runtime signature)

-----> Building dependencies

Pruning any extraneous modules

Installing node modules (package.json)

express@4.13.3 node_modules/express

tqq escape-html@1.0.2

tqq merge-descriptors@1.0.0

tqq array-flatten@1.1.1

tqq cookie@0.1.3

tqq utils-merge@1.0.0

tqq cookie-signature@1.0.6

tqq methods@1.1.1

tqq fresh@0.3.0

tqq range-parser@1.0.3

tqq vary@1.0.1

tqq path-to-regexp@0.1.7

tqq content-type@1.0.1

tqq etag@1.7.0

tqq parseurl@1.3.0

tqq content-disposition@0.5.0

tqq serve-static@1.10.0

tqq depd@1.0.1

tqq qs@4.0.0

tqq finalhandler@0.4.0 (unpipe@1.0.0)

tqq on-finished@2.3.0 (ee-first@1.1.1)

tqq proxy-addr@1.0.10 (forwarded@0.1.0, ipaddr.js@1.0.5)

tqq debug@2.2.0 (ms@0.7.1)

tqq send@0.13.0 (destroy@1.0.3, statuses@1.2.1, ms@0.7.1, mime@1.3.4, http-errors@1.3.1)

tqq type-is@1.6.10 (media-typer@0.3.0, mime-types@2.1.8)

mqq accepts@1.2.13 (negotiator@0.5.3, mime-types@2.1.8)

-----> Caching build

Clearing previous node cache

Saving 2 cacheDirectories (default):

- node_modules

- bower_components (nothing to cache)

-----> Build succeeded!

mqq express@4.13.3

-----> Discovering process types

Procfile declares types -> web

-----> Releasing node-js-app (dokku/node-js-app:latest)...

-----> Deploying node-js-app (dokku/node-js-app:latest)...

-----> DOKKU_SCALE file not found in app image. Generating one based on Procfile...

-----> New DOKKU_SCALE file generated

=====> web=1

-----> Running pre-flight checks

For more efficient zero downtime deployments, create a file CHECKS.

See http://progrium.viewdocs.io/dokku/checks-examples.md for examples

CHECKS file not found in container: Running simple container check...

-----> Waiting for 10 seconds ...

-----> Default container check successful!

=====> node-js-app container output:

Node app is running at localhost:5000

=====> end node-js-app container output

-----> Running post-deploy

=====> unsupported vhost config found. disabling vhost support

-----> Setting config vars

NO_VHOST: 1

-----> Setting config vars

NO_VHOST: 1

-----> no nginx port set. setting to random open high port

-----> Setting config vars

DOKKU_NGINX_PORT: 2720

-----> Creating http nginx.conf

-----> Running nginx-pre-reload

Reloading nginx

-----> Setting config vars

DOKKU_APP_RESTORE: 1

=====> Application deployed:

http://192.168.80.134:32768 (container)

http://192.168.80.134:2720 (nginx)

To dokku@192.168.80.134:node-js-app

* [new branch] master -> master

でブラウザで結果確認。今回はnode jsのサンプルの結果です。正常に表示されます。

image

これで、ソースコードからdeployすることができました。

この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿