参考にさせて頂いたページ
docker-composeのインストール
- Docker Compose のインストール — Docker-docs-ja 17.06.Beta ドキュメント
- dockerとdocker-composeのインストール(Linux編) - Qiita
docker daemonの起動とか
dockerコマンドをsudo無しで実行する方法
- Dockerコマンドをsudoなしで実行する方法 - Qiita
- dockerコマンド実行時の「Got permission denied while trying to connect to the Docker daemon socket」 | Libra Studio エンジニアブログ
docker-compose を使ってrailsの開発環境を構築する
はじめに
途中で躓きすぎてどの辺が上手くいったのかよくわからないです。
ホスト環境
- Ubuntu 18.04
dockerをインストールしてhello worldをやってみる
sudo無しでdockerコマンドを実行できるようにする
以下のリンクは2つありますが、手順をひとつ試して上手くいかない場合には端末を再起動してみてから、もう一つの方法を試すといいかもしれません。
- Dockerコマンドをsudoなしで実行する方法 - Qiita
- dockerコマンド実行時の「Got permission denied while trying to connect to the Docker daemon socket」 | Libra Studio エンジニアブログ
docker-compose をインストールする
公式ドキュメント通りやってみて上手くいかなかったら個人の記事に頼ります。
- Docker Compose のインストール — Docker-docs-ja 17.06.Beta ドキュメント
- dockerとdocker-composeのインストール(Linux編) - Qiita
docker daemonの起動とか
docker daemonの起動とか、自動で起動する方法とかもここで押さえておくと良さそうです。
railsの環境構築をする
だいたい以下のページを参考にさせて頂きました。
ディレクトリを作成して移動
mkdir project cd project
docker-compose.ymlを作成
自分は version: '2'
にしないとエラーが出ましたのでそこだけ変更しています。
自分のdocker-compose ymlの内容は下記の通りです。
version: '2' services: web: build: . ports: - "3000:3000" command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/myapp - bundle:/usr/local/bundle depends_on: - db db: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: password # MYSQL_ALLOW_EMPTY_PASSWORD: "yes" パスワードなしにしたい場合はこれ ports: - '3306:3306' volumes: - mysql_data:/var/lib/mysql volumes: bundle: mysql_data:
Dockerfileを作成
rubyバージョンだけ新しいものにしていますが、それ以外はそのままです。
FROM ruby:2.6.3 ENV LANG C.UTF-8 RUN apt-get update -qq && apt-get install -y \ build-essential \ nodejs \ && rm -rf /var/lib/apt/lists/* RUN gem install bundler WORKDIR /tmp ADD Gemfile Gemfile ADD Gemfile.lock Gemfile.lock RUN bundle install ENV APP_HOME /myapp RUN mkdir -p $APP_HOME WORKDIR $APP_HOME ADD . $APP_HOME
Gemfileを作成
Gemfileはそのままです。railsのバージョンも新しい方が良いかもしれませんが。
source 'https://rubygems.org' gem 'rails', '5.1.4'
Gemfile.lockを作成
空のファイルを作成します。
以下のコマンドで作成しました。
touch Gemfile.lock
コマンド実行
参考ページにならってwebサービスにrails newします。
docker-compose run --rm web bundle exec rails new . --force --database=mysql --skip-bundle
docker-compose buildします。
docker-compose build
webサービスにbundle installしてgemをインストールします。
docker-compose run --rm web bundle install
docker-compose upします。
docker-compose up
以下の表示で止まりました。
db_1 | Version: '5.7.26' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL)
ブラウザでアクセスしてみる
http://localhost:3000/ にブラウザでアクセスしたらrailsの初期ページが表示されました。
一度止める
別タブでprojectディレクトリまで移動して、以下のコマンドで止まります。
docker-compose down
ディレクトリとファイルの所有者変更
このままだとrails newによって生成されたファイルの所有者がrootなので、以下のような感じで所有者を変更すると編集しやすいと思います。
.gitディレクトリを削除
projectディレクトリに.gitディレクトリが作成されているので削除すると良いと思います。
任意のgitリポジトリで管理する
projectディレクトリを丸ごと任意のgitリポジトリにコミットすると楽だと思います。
今後サーバーを起動するとき
以下のように-dを付けてバックグラウンドで起動するのも良いと思います。
docker-compose up -d