11
13

More than 5 years have passed since last update.

15分で社内向けAdvent Calendar環境をつくる

Last updated at Posted at 2017-11-23

はじめに

身につけたスキルや勉強法、便利なツールなどを会社のみんなで共有する場が欲しくてAdvent Calendarをやろうと思ったのですが、外部に公開するのも気が引けるので社内だけでワイワイやれるクローズドな環境を作りました。

Githubで公開されているradventを使わせてもらって作成したDockerイメージからコンテナを作成するだけです。
12月まであとわずかですが、15分で環境ができるならまだ間に合いますよ!

必要なもの

  • Docker環境(今回はEC2にインストール)
  • アクセスコントロール(今回はAWSのセキュリティグループを使用して会社のグローバルIPアドレスからのみEC2へのアクセスを許可)

所要時間

  1. インスタンス作成(5分)
  2. Dockerインストール(5分)
  3. コンテナ作成/radvent起動(5分)

手順

インスタンス作成

今回はUbuntu16.04を使いました。手順は省略します。

Dockerインストール

公式サイト参照

コンテナ作成

インスタンスへSSHアクセスして以下のコマンドを実行

sudo docker run -it --name <containername> -p <port>:3000 mongamaenioh/radvent:latest /bin/bash

containername = 任意のコンテナ名
port = リッスンするポート番号(もちろん任意で指定できますがnetstatなどでListenしていないか前もって確認しましょう)
3000はコンテナ側のポート(Railsなので)

これでコンテナが作成されて中に入ります。

radvent起動

cd /home/radvent
export SECRET_KEY_BASE=`bundle exec rake secret`
bundle exec rails server -e production

以下のようにListeningになれば成功です。

=> Booting Thin
=> Rails 4.1.7 application starting in production on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
Thin web server (v1.7.0 codename Dunder Mifflin)
Maximum connections set to 1024
Listening on 0.0.0.0:3000, CTRL+C to stop

アクセスコントロール

セキュリティグループのインバウンドルール設定でポート範囲portで指定したポート番号、ソースに会社のグローバルIPアドレスを入力して保存(このキャプチャだとソースで全許可してしまってますが適宜変更してください。ポート番号は2017年なので2017としました。)

1.png

記事作成

ブラウザからhttp://EC2のパブリック側アドレス:指定したポート番号へアクセスすると以下のような画面が表示されます。

2.png

参加登録から記事を作成しましょう。
登録した日になれば記事が公開されます。

おまけ

開始終了日の設定(来年以降は別のコンテナ作って設定変更すればOK)

/home/radvent/config/initializers/constants.rb
module Constants
  #Set advent calendar date
  YEAR = 2018
  MONTH = 12
  START_DAY = 1
  END_DAY = 25
end

タイトルの変更(会社名などを入れてそれらしく)

/home/radvent/app/views/welcome/index.html.haml
%h1 <ここに会社名とか> Advent Calendar #{Constants::YEAR}
11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13