学んだこと、細かい設定、エラーをメモ
環境
Ruby 2.6.5
Rails 5.2.4
Docker 19.03.5
bundler 2.1.4
実装:Docker環境
各ファイル用意
適当にディレクトリ作成してその中に下記のファイルを入れる
$ mkdir hoge
Dockerfile
docker-compose.yml
Gemfile
Gemfile.lock
Dockerfile
Dockerの新しいimageを作成する際に使用する設定ファイル。
コンテナはこの設定(image)を元に作成される。
Dockerfile → クラス
コンテナ → インスタンス
みたいなイメージ?
FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN bundle install
COPY . /app
docker-compose.yml
Dockerで複数のコンテナを設定に従ってまとめて起動するために使用する。
今回はRailsを実行するコンテナ、Mysqlを実行するコンテナの2つを起動する設定を記述。
version: '3'
services:
web:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/app
ports:
- 3000:3000
depends_on:
- db
tty: true
stdin_open: true
db:
image: mysql:5.7
volumes:
- db-volume:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
db-volume:
source 'https://rubygems.org'
gem 'rails', '5.2.4'
空でOK
Railsプロジェクト作成
$ docker-compose run web rails new . --force --database=mysql
docker-compose run web
docker-compose.ymlで設定したWebコンテナ(Railsコンテナ)の中で後に続くコマンドが実行される。
イメージをビルド
$ docker-compose build
Dockerfile
が実行
database.yml編集
passwordとhostの指定
password: docker-compose.ymlの MYSQL_ROOT_PASSWORD で設定した文字列(今回はpassword)
host: MySQLサーバーのコンテナ名(今回はdb)
コンテナ起動
・起動
$ docker-compose up -d
・起動確認
$ docker-compose ps
stateがUpになっていれば起動確認
・コンテナ、ネットワークの削除
--rmi all
でイメージも削除
$ docker-compose down --rmi all
データベース作成
$ docker-compose run web bundle exec rails db:create
bundlerのバージョンを変更したらエラー
1系がインストールされていることに気がついたので2系にしたらエラーがでた。
こちらの記事を参考に。
FROM ruby:2.6.5
RUN apt-get update -qq && apt-get install -y build-essential nodejs
RUN mkdir /app
WORKDIR /app
COPY Gemfile /app/Gemfile
COPY Gemfile.lock /app/Gemfile.lock
RUN gem install bundler # 追加
RUN bundle install
COPY . /app
bundle install
の前に最新のbundlerをインストールすることで解決。
Docker内のMySQL接続方法
dockerで立ち上げた MySQLへの接続
$ docker-compose up -d →コンテナ起動
$ docker-compose ps →現在立ち上がってるコンテナ確認
↪︎ NAMEのdb名を確認(my_youtube_space_db_1)
$ docker exec -it my_youtube_space_db_1 bash → コンテナへ接続
# mysql -u root -p →シャープが表示されたら入力する
Enter password: → docker-compose.ymlで設定したパスワード入力
後はローカルのMySQLいじる時の操作と同じ
実装:Githubへプッシュ
Git Flow
$ git flow init
enter * 7回
リモート作成
github → Your profile → Repositories → NEW → リモート名記述 → Create repository
リモートとローカルの紐付け
$ git remote add origin url
$ git push -u origin master
$ git push --all
.gitignore編集
# 追記
/config/database.yml
docker-compose.yml
add commit push
割愛