LoginSignup
0
1

More than 3 years have passed since last update.

作成中のアプリケーションにdockerを導入する

Posted at

はじめに

dockerにまずは触れてみるということで、作成中のRailsアプリをコンテナに入れてまずは開発環境を作ってみた。
ちなみにこちらの記事を参照に導入を行った。
Ruby on Rails 「途中まで作ったアプリにDockerを導入したい」に挑戦してみる

前提

Railsアプリ作成済

環境

Mac OS Catalina
Ruby 2.6.5
Rails 6.0.0
MySQL 5.6.47

行ったこと

今回作成したファイルは「Dockerfile」と「docker-compose.yml」の2つ。
(前提としてrailsのアプリを作成済なので、「Gemfile」と「Gemfile.lock」は今回は新たに作る必要なし。)
ただし、Gemfile.lockはコンテナをbuildする前に一度全て記述を削除してbundle installが必要。

Gemfile.lock
#記述がある場合は消しておく。
#コンテナをbuild前に以下を実行
% docker-compose run web bundle install

次にコンテナをbuild

% docker-compose build 

それからdockerにもDBを作らなければいけないため、以下を実行

% docker-compose run web bundle exec rake db:create
% docker-compose run web bundle exec rake db:migrate

これでコンテナを起動する

% docker-compose up

起動はできたが、ブラウザで確認するも接続ができない。
まずはコンテナの状態を確認する。

#起動中のDockerコンテナを表示
% docker ps
=>

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
ad25b9c231b9        mysql:5.7           "docker-entrypoint.s…"   7 minutes ago       Up 7 minutes        33060/tcp, 0.0.0.0:4306->3306/tcp   drill_app2_db_1

Mysqlしか動いていない。よく起動画面を見たら、

web_1  | sh: 1: yarn: not found
web_1  | ========================================
web_1  |   Your Yarn packages are out of date!
web_1  |   Please run `yarn install --check-files` to update.
web_1  | ========================================
web_1  | Exiting

web側?(言い方が分からない)が起動できていない。yarnが古いらしいのでアップデートする。

% docker-compose run web yarn upgrate

=>
Error response from daemon: OCI runtime create failed: container_linux.go:349:
starting container process caused "exec: \"yarn\": executable file not found in $PATH": unknown

これもエラーが出てしまい、upgradeできない。どうしようかと考えていたところ、同じ状況の記事を発見したのでこちらに沿ってファイルの設定を変更する。
yarnが原因でdocker-compose up ができない ( Your Yarn packages are out of date!)

config/webpacker.yml
# Verifies that correct packages and versions are installed by inspecting package.json, yarn.lock, and node_modules
#下記をtrue=>falseに変更

check_yarn_integrity: false

"check_yarn_integrity:"は、js用のパッケージが古くなっていたら知らせてくれる設定らしい。ここではいったんそれをoffにする。
webpacker の check_yarn_integrity オプションについて調べてみた

これでもう一度、起動。

% docker-compose up

これでとりあえず起動完了。ブラウザも表示されるようになった。mysqlへの接続もok。

終わりに

どうもrails6系ではwebpackが入ったため、yarnのエラーが絡んでくるとかなんとか。
それからGemlock.fileを消したのがまずかったのかもしれない。(すみません、まだ詳しく調べられていません。)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1