【オンライン開催】銀座Rails#22 @リンクアンドモチベーション https://ginza-rails.connpass.com/event/176491/
https://shuuu-mai.connpass.com/event/173794/
更新履歴 2019/11/27: 初版公開 2020/05/01: サブコマンド実行部分に追記 2021/04/14: dip 7.0に合わせて更新 2021/07/16: docker-composeコマンドをdocker composeに置き換え dipとは dipは、Rails開発会社のEvil Martiansのメンバーが作った、docker-composeでの作業を能率的に行えるツールです。dipはDocker Interaction Processの略だそうです。 dipはRubyで書かれているのでRuby実行環境が必要です。元々Rails向けに作られたツールのようですが、Evil MartiansのReactアプリにもdip.xmlがあることからわかるように、Railsに限らず一般のdocker-composeでも使えます。私の場合はローカル開発環境でのみ使っています。 追記
はじめに SREチームの @minamijoyo です。 先日 CrowdWorks (crowdworks.jp) の本番環境のRailsアプリケーションを Docker (AWS ECS: Elastic Container Service) に移行しました。 CrowdWorksは2012年にサービスを開始し、2019年10月現在、ユーザ数は300万人、月間で数億円規模のお仕事がやりとりされる、国内最大級のクラウドソーシングプラットフォームにまで成長しました。 サービスの規模拡大に合わせて、ソースコードも数十万行規模に成長し、 決して小さくはない規模のRailsアプリケーションに成長しました。 CrowdWorksの開発環境にDockerが導入されたのはもうかれこれ3年半前の2016年の4月頃、2017年1月頃にはCrowdWorks本体から切り出された一部の機能で本番環境に投入され
morishita です。 今回はいこレポでのログ出力について紹介します。 いこレポの動作環境 いこレポは ElasticBeanstalk を利用してアプリケーションサーバを稼働させています。 ElasticBeanstalk ではプラットフォームを選択できますが、 Multi Container Docker を利用しています。 この場合、実際にRailsが稼働するのは ECS上に起動された Docker コンテナとなります。 Dockerではコンテナ内に永続化するデータを保存しないことが基本ですが、ログも コンテナ削除時に消えていい情報ではないので何らか外に出す必要があります。 その方法としては次の方法があるかと思います。 案1. ホスト側のディレクトリをマウントして、そこにログを保存する 案2. Fluentd でログサーバに転送する 案3. Cloudwatch Logsに転送す
@joker1007 self.inspect @joker1007 パーフェクトRuby, パーフェクトRails 著者 Asakusa.rb, Yokohama.rb, Shibuya.rb データ分析基盤構築, Bigquery, インフラ全般 fluent-plugin-bigqueryメンテナ (株)Repro 宣伝タイム 現在のECSの活用状況 主要システムはほぼECSに移行完了 メインWeb, API, 各種非同期処理ワーカー クラスタは基本で15台 ASでその倍から3倍ぐらいまで増える 開発者用ステージング、QA環境等にも利用 何故ECS化したのか ミドルウェアのバージョン管理の容易さ Ruby, nginx, fluentd ... TaskDefinitionのリビジョンでロールバックできる 無停止デプロイメントの簡易化 AutoscaleのためのAMI管理不要 pul
本記事は個人の意見であり、所属する組織の見解とは関係ありません。 こちらはAWS Fargate Advent Calendar 2017の12/3分の記事です。 今日は、Ruby on Railsのアプリケーションをローカル環境で作成し、それをFargateにECSでデプロイするところをやってみます。なお、データベースとしてはAmazon RDSで作成したMySQLを利用します。 事前準備 以下のものをローカルにインストールしておきます。 AWS CLI ECS CLI Docker CLI (Compose含む) ローカル環境の構築 Docker ComposeのRailsチュートリアルが秀逸なので、これを踏襲しながら実施してみます。 docker Quickstart: Compose and Rails 手順は全てMakefileにしてみました。 new: echo "$$_gem
追記(2018/07/07) node バイナリと yarn バイナリのインストールを、nodeの docker image からコピーする方式に改善しました。 参考URL: https://qiita.com/izumin5210/items/cf14a1ea58fb82d36bb2 はじめに docker-composeを使い、railsを簡単に開発できるテンプレートを作成しました。 webpackerの利用にも対応しています。 特徴は以下の通りです。 bundle installをdockerイメージビルドの時でなく、ENTRYPOINTで行います。 インストールされたgemがDockerVolumeにキャッシュされるので、Gemfileを更新してもイメージの再ビルドをする必要がありません。 webpackerにも対応。webpack-dev-serverが自動で起動されます。 we
追記 続編書きました。 よりスリムになって、webpackerにも対応しました。こっちの方を読んでください。 「DockerでRails+Webpackerの開発環境を構築するテンプレート」 はじめに docker-composeを使い、railsを簡単に開発できるテンプレートを作成しました。 特徴は以下の通りです。 bundle installをイメージビルドのときではなく、ENTRYPOINTで行う springコンテナを用意して高速にrailsコマンドを実行できる テンプレートは、github にアップロードしています 使い方 テンプレートからプロジェクトを立ち上げる場合は、以下のコマンドです。RubyバージョンやRailsのバージョンを調整できます。 git clone https://github.com/kawasin73/rails_docker_template.git c
Rails 5.2.1 https://github.com/minakawa-daiki/rails-docker/blob/master/Gemfile MySQL MySQL 5.7 https://github.com/minakawa-daiki/rails-docker/blob/master/docker-compose.yml セットアップ .env.sample を .env にリネームする docker-compose run --rm web bundle exec rails new . --force --database=mysql config/database.ymlを編集する ... default: &default adapter: mysql2 encoding: utf8 pool: <%= ENV.fetch("RAILS_MAX_THREADS
AWS Fargate早く東京に来てくれという願いをこめて、東京で1つでも事例を増やそうと記事を書いていたら公開する前にAWS Fargateが東京に来ることが先日発表されました!めでたいです。アリネ事業部の平田です。 今日はARINEで使っていく(かもしれない) AWS Fargate を使ったRSpecの実行環境の話と、Docker Compose使っているならFargateいいかもしれませんよ、という話をします。 背景 アリネ事業部では、なりたい自分がきっと見つかる美容メディア ARINE を運用しています。 ARINEのサーバサイドはRubyで書かれており、ウェブアプリケーションフレームワークはRuby on Railsを採用し、テストにはRSpecを使っています。 テストは徐々に増えており現在テストが1000件ほどで、テストにかかる時間も徐々に長くなり、完走するのに10分以上かか
おはようございます。一番よく使うemojiは 👀 (:eyes:) のうなすけです。 さて弊社では、最近社内Railsアプリをひとつ構築しました。それをECSで運用することにしたので、そこに至るまでの経緯、つまづき、これからの課題などなどを記事にしていこうと思います。上の図は現時点での簡単なAWS上での構成図です。 以下、見出しは時系列順でやったことを記録していきます。 社内Railsアプリ、一体どんなもの? ここで新規に構築することになった社内Railsアプリですが、特に凝ったことはしていない単純なRailsアプリです。初めからECSで運用することにしていたので、開発環境も全てDockerで構築しています。Railsのバージョンは5.1.0、Docker imageのFROMにはruby:2.4.1-silmを採用しています。 Docker imageのtagについて developm
目的 いい感じに使える、Dockerの開発環境を構築する。 最終的な目的はProductionでDockerを使うイメージを固めること。 環境 Vagrant Ubuntu Trusty 14.04 Docker Docker version 17.03.1-ce, build c6d412e Rails5.1 rc1 docker for mac はいい噂を聞かないのでVagrant上でDockerを使用する。 当然、docker for mac でも動く。 Railsアプリ作成 bundle init gem 'rails', '~> 5.1.0.rc1' bundle instlal --path vendor/bundle sprockets, turbolinksを抜いています。 DBはmysqlを使用 bundle exec rails new --skip-bundle -d
こんにちは。エンジニアの志村です。 今回から私は「Docker on Rails with ECSを実現させるために考えたこと」と題して、実際にDockerをProductionで運用する際にハマったポイント、また考慮すべき点に関して、数記事に渡って執筆していこうかなと考えております。 弊社では開発環境はDocker + compose、その他はItamae × EC2の構成でしたが、現在ドッグフーディング・本番環境をDocker with ECSに移行しております。 ProductionをDockerで運用しようと思った背景 今回インフラ環境を見直した背景として、 プロビジョニングツールの管理つらい →緊急で直接サーバ内で作業をした際にプロビジョニングツールとサーバ側の差異が発生。 OSにインストールしているライブラリのアップデートが完全手動になっている。 →自動化したい Product
概要 Web アプリケーションを開発しているときに、開発環境に MySQL や Redis を用意しバージョンを揃え、いや Redis はキャッシュにしか使ってないし必須じゃないから開発環境に無い場合のコードも書いて…… というようなことを2017年にもなってやりたくないので、Docker を使って良い感じにやっていきます。 Docker や Docker Compose に関する基本的な説明は割愛するので、公式ドキュメントをあたってください。 目標 コマンド一発で必要なサービス群が全て立ち上がるようにする Docker Compose を使い、1サービスごとに1コンテナを立ち上げる vendor や node_modules は、ホスト側のものと完全に分離する。OS が違う場合、Native extension があると問題の原因になるので避けたい。 ホスト側ではエディタと git さえ
最近、Rails界隈でDocker使い始めました、という話を聞く機会が増えてきたので、自分が開発環境整備用に構築したDockerの設定をまとめておく。 ちなみに、production運用については以前書いたので適当に探してくださいw 結論から書いておくと、volumeをちゃんと活用すればいい、ってだけの話です。 まず、本番用と開発用のDockerfileは分けた方が良い。一つでやろうとするとどうにも無理がでるので。 自分はDockerfileとDockerfile-devというものを用意している。 docker-composeはほぼ必須です。少なくともrailsプロセスとDBだけでも二つは必要だし、Dockerfileを分けてると事故るので。 Dockerfileはこんな感じ。 FROM mybase:ruby-2.3.1-debian RUN echo "deb http://http.
Docker は、以前に「勉強」だけはしていたのだけど「実践」はあんまりできていなかった。でも、ここのところ Docker for Mac の評判がずいぶん良いらしいので、遅くはなったけど「実践」の頃合いかなということで腰を上げてみた。Docker 再入門、ってことで。 Docker for Mac のインストールと Getting Started ここの通りに進めていってみる。Docker for mac は 2016/06/29 現在、public beta。 進めていくなかで、Getting Started の途中にある、hello-world の docker run にて $ docker run hello-world Unable to find image 'hello-world:latest' locally Pulling repository docker.io/l
Railsアプリケーション開発を完全にDocker化する Tweet Degica のすべてのサービスは Rails で開発しており、そのうちの一部は Docker を使用した本番環境にデプロイしています。しかし開発者個人の開発環境にはいまだに Docker を導入できていません。最も大きな障害は spring を docker コンテナ内で上手く扱う方法が確立されていなかったことですが、この問題は docker-compose を工夫して利用することで解決可能であることがわかりました。 ということで、今回は rails アプリケーションの開発環境を完全に docker 化する方法を紹介します。 完全に、というところがポイントです。この方法を使えば docker 以外のツールを一切ホストマシンにインストールせずに rails アプリの開発を行うことができます。 (ちなみに、弊社の本番環境は
実際には、まだ本当の本番環境では運用できてなくて開発用のステージングで運用が開始できたぐらいで、他にもやること一杯あるんだけど、ある程度知見が溜まったのでまとめておく。 ちなみに、規模はそんなに大きくないがデータ量は多いアプリケーションで運用環境はAWSのECSを想定しており、現時点で普通のEC2ノードとコンテナで並行稼動している。 docker-swarmなりで自前でコンテナプールを構築してもいいのだが、そうするとサービスディスカバリとか考えなければいけないことが増えるので、後回しにしている。 (注: かなりサービス固有の事情が含まれるため、もし参考にされる方が居たとしても、そのままの形では適用できない可能性が高い) 追記: RailsアプリのためのDockerfileとdocker-compose.ymlのサンプル - Qiita コンテナ化のモチベーション CentOSのお守りからの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く