Skip to content

Instantly share code, notes, and snippets.

@nishina555
Last active April 23, 2017 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nishina555/8d46078d2caf02ea4436ebdd18b01cba to your computer and use it in GitHub Desktop.
Save nishina555/8d46078d2caf02ea4436ebdd18b01cba to your computer and use it in GitHub Desktop.
綺麗な手順書を作るための自分ルール

Dockerイメージのビルド・コンテナ起動@localhost

------------------------------
■雛形の作成
------------------------------

### アプリのディレクトリ作成・移動
$ mkdir rails-docker-starter
$ cd rails-docker-starter

### ファイルのコピー
$ ./init.sh /path/to/application
# docker-compose.dev.yml, Dockerfile.dev, .env.dev, database.ymlがコピーされる
# docker-compose.dev.yml -> docker-compose.yml にリネームされる
# Dockerfile.dev -> Dockerfileにリネームされる

### Gemfileの作成
$ echo "source 'https://rubygems.org'\ngem 'rails', '5.0.0.1'"> Gemfile

### イメージの構築
$ docker-compose build

### railsの雛形作成
  ### mysqlの場合
  $ docker-compose run --rm web bundle exec rails new . --force --database=mysql --skip-bundle -d
  # --rm: 実行後コンテナを削除
  # --force: ファイルが存在したら上書きする
  # -d: デーモン(バックグラウンド)実行

  ### postgresqlの場合
  $ docker-compose run --rm web bundle exec rails new . --force --database=postgresql --skip-bundle -d
  # --rm: 実行後コンテナを削除
  # --force: ファイルが存在したら上書きする
  # -d: デーモン(バックグラウンド)実行

### docker volumeの確認
$ docker volume ls
-> bundleとdbのvolumeが作成されていることを確認
#------------------------------
DRIVER              VOLUME NAME
local               railsdockerstarter_bundle_install
local               railsdockerstarter_db
#------------------------------  

### プロセス確認
$ docker ps
-> dbのプロセスが立ち上がっていることを確認
#------------------------------
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
462efa6ab9cf        mysql:5.7           "docker-entrypoint..."   4 minutes ago       Up 4 minutes        0.0.0.0:3306->3306/tcp   railsdockerstarter_db_1
#------------------------------

### databaseのconfigの編集
$ cp database.yml config/database.yml

### gitignoreのアップデート
$ echo "\n# Docker\n.env.dev" >> .gitignore
# .env.devに環境変数が書かれているため、.env.devを.gitignoreに追加

### datebase.ymlの設定に従って、データベースを作成する
$ docker-compose run web bundle exec rails db:create

------------------------------
■コンテナの作成
------------------------------

### コンテナを作成して起動する
$ docker-compose up -d
# -d: デーモン(バックグラウンド)実行

### コンテナ起動確認
docker ps
-> webとdbのプロセス実行されていることを確認
#------------------------------
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
5b57c2dce81c        railsdockerstarter_web   "prehook 'ruby -v'..."   53 seconds ago      Up 52 seconds       0.0.0.0:3000->3000/tcp   railsdockerstarter_web_1
f6cc03baa3d7        mysql:5.7                "docker-entrypoint..."   55 seconds ago      Up 53 seconds       0.0.0.0:3306->3306/tcp   railsdockerstarter_db_1
#------------------------------

------------------------------
■起動したコンテナにログイン
------------------------------

### webコンテナにログインする
$ docker exec -it $WEB_CONTAINER_NAME /bin/bash
# 例. docker exec -it railsdockerstarter_web_1 /bin/bash
#
# コンテナにログインせずに直接コマンド実行したい場合、上記の/bin/bashの部分をコンテナで実行するコマンドに変更すればいい。
# 例. $ docker exec -it railsdockerstrater_web_1 bundle exec rails db

アプリケーションの起動@webコンテナ

### railsを実行する。その間ログも別ターミナルで確認しておくとよい
[root]
$ tail -f log/development.log
# 初回はdevelopment.logは存在していない
$ bundle exec rails s -b 0.0.0.0
-> 起動後、http://localhost:3000/ にアクセスし、Railsのトップページが表示されたらOK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment