post Image
commit番号毎で、URLにアクセス出来るgalaxyというAPIを作った

概要

  • アプリを開発する際、http://commit番号-ドメインとかで見れるようになると凄い楽そうだなぁと思い、galaxyというAPIを作ってみました(commit番号は7桁)
  • https://github.com/sioncojp/galaxy

仕組み

galaxy

  • 複雑に見えますがシンプルです。流れとしてはこんな感じです。
    • 事前にDockerをインストール
    • commit番号を保管する”galaxy.commits”テーブルを作成する
    • ベースとなるconfig.ymlを作る
    • galaxy -c config.yml APIサーバ起動
    • /repository -X POST 作業用のworkdirを作る * ターゲットとなるリポジトリをgit cloneしたてくる。
    • /container_proxy -X POST config.ymlに指定したproxyサーバを立てる
    • /container/:commit_number -X POST -F "commit_number=99c6894" commit番号でdocker containerを立てる

      • “workdir/commit番号/”を作成し、”コンテナ:/tmp”にマウントされてる
      • “VIRTUAL_HOSTS変数 = commit番号-config.url”をセット
      • コンテナ起動後、ローカルスクリプトが実行可能(config.script)で、”引数$1 = workdir/commit番号/”となっている。
        ここでbuildしたものやrailsだとcpなどで”workdir/commit番号/”に移してあげる
      • コンテナ起動後+ローカルスクリプト実行後、コンテナに対しbashコマンドが実行可能(config.docker.exec)
      • コミット番号40桁をDBに登録
    • /etc/hostsを書き換えれば、proxyを介してアクセス可能。
      • 例: 127.0.0.1 99c6894-test-app.com
      • proxyはjwilder/nginx-proxyベースで、建てたコンテナの”VIRTUAL_HOSTS変数”を読み取って動的に”/etc/nginx/conf.d/default.conf”を書き換える
      • また、workdirが/tmpにマウントされているので、コンテナ毎のapp.sockにアクセスすることが出来る
    • /container/list proxy以外のコンテナ一覧を表示
    • /url/list アクセス可能なURL一覧を表示

サンプルその1 – Go

スクリーンショット 2017-01-12 1.34.33.pngスクリーンショット 2017-01-12 1.34.24.png

サンプルその2 – Rails

最後に

  • 社内の開発環境として適用出来たらいいなぁと実験をしてます
  • 改善点はいっぱい(テスト書かないと)ですので、じっくり育てて行ければなと思います

『 Go 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。