AWSのEC2にDockerをインストールしてOSS版Drone 0.4.0を動かす
背景
前々からDroneに興味があったので構築してみました。Githubなどとの連携を確認するためにAWSのEC2上で動かします。
AWSでEC2インスタンスを用意
VPCを作成してEC2インスタンスを起動します。今回はUbuntuのAmazon EC2 AMI Locatorから15.10(hvm:ebs-ssd)のを用いました。
sshのログインユーザ名は「ubuntu」になります。EIPを割り当ててセキュリティグループを適宜設定します。Githubからはhttpsが通ればOKです。
Ubuntuの設定
ひとまずパッケージを最新にしておきます。
$ sudo apt-get update
$ sudo apt-get -y upgrade
Dockerのstorage driverにaufsを使うためにkernelを変更します。
$ sudo apt-get -y install linux-image-extra-virtual aufs-tools
タイムゾーンと言語を日本語にあわせておきます。
$ sudo timedatectl set-timezone Asia/Tokyo
$ sudo apt-get -y install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
ここでいったんインスタンスを再起動させます。
Dockerのインストール
以下を参考にインストールしていきます。
リポジトリを登録します。
$ sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ echo <<'EOT'>/etc/apt/sources.list.d/docker.list
# Ubuntu Wily
deb https://apt.dockerproject.org/repo ubuntu-wily main
EOT
インストール可能なバージョンを確認します。
$ sudo apt-get update
$ sudo apt-cache policy docker-engine
今回は1.8.3をインストールしてみます。
$ sudo apt-get -y install docker-engine=1.8.3-0~wily
$ sudo systemctl enable docker
Drone 0.4.0を動かす
Droneの設定ファイルを作成します。
$ cat <<'EOT' | sudo tee /etc/drone/dronerc
#!/bin/bash
# server configuration
SERVER_ADDR=":8443"
SERVER_CERT="/etc/server.crt"
SERVER_KEY="/etc/server.pem"
# database configuration
DATABASE_DRIVER="sqlite3"
DATABASE_CONFIG="/var/lib/drone/drone.sqlite"
# remote configuration
REMOTE_DRIVER="github"
REMOTE_CONFIG="https://github.com?client_id=xxx&client_secret=yyy
# docker configuration
DOCKER_HOST="unix:///var/run/docker.sock"
#DOCKER_CERT=""
#DOCKER_KEY=""
#DOCKER_CA=""
# plugin configuration
PLUGIN_FILTER=plugins/*
EOT
REMOTE_CONFIGの「xxx」と「yyy」はGithub上で登録したアプリケーションのものをもってきます。また「/etc/server.crt」と「/etc/server.pem」にサーバのSSL証明書と秘密鍵を用意しておきます。
DroneをDockerイメージから動かします。
$ sudo docker run \
--volume /var/lib/drone:/var/lib/drone \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume /etc/server.pem:/etc/server.pem \
--volume /etc/server.crt:/etc/server.crt \
--env-file /etc/drone/dronerc \
--restart=always \
--publish=443:8443 \
--detach=true \
--name=drone \
drone/drone:0.4
これで https://(サーバ名)/ からDroneにアクセスできるようになります。