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
# ## railsを実行する。その間ログも別ターミナルで確認しておくとよい
[root]
$ tail -f log/development.log
# 初回はdevelopment.logは存在していない
$ bundle exec rails s -b 0.0.0.0
-> 起動後、http://localhost:3000/ にアクセスし、Railsのトップページが表示されたらOK