現在、EC2にdockerを導入しています.
db:createまでは問題なかったのですが、
docker-compose run app rails db:migrate
上記のコマンド実行時に下記のエラーが出ています。
NoMethodError: undefined method `[]' for nil:NilClass
該当箇所を調べてみるとTwitter認証で使用する環境変数をCredentials.ymlから参照している箇所でした。
EDITOR=vim bin/rails credentials:edit
上記のコマンドでCredentials.ymlの中身を確認すると問題なく環境変数がありました。
何かエラーの原因の分かる方いませんでしょうか。
下に参考ファイルを貼っておきます。
Dockerfile FROM ruby:2.5.1 RUN apt-get update && \ apt-get install -y mysql-client nodejs vim --no-install-recommends && \ rm -rf /var/lib/apt/lists/* RUN mkdir /myproject WORKDIR /myproject ADD Gemfile /myproject/Gemfile ADD Gemfile.lock /myproject/Gemfile.lock RUN gem install bundler RUN bundle install ADD . /myproject
docker-compose version: '2' services: db: image: mysql:5.6 volumes: - mysql-data:/var/lib/mysql #データの永続化のために必要 ports: - "4306:3306" #両方3306でもok。DBをsequel proで可視化したい為 environment: MYSQL_ALLOW_EMPTY_PASSWORD: password app: tty: true #コンテナ上でbinding.pryするために必要 stdin_open: true #コンテナ上でbinding.pryするために必要 build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/myproject #ローカルのディレクトリをコンテナ上にマウント - bundle:/usr/local/bundle #bundle installした後buildし直さなくてよくなる ports: - "3000:3000" links: - db volumes: mysql-data: bundle: #bundle installした後buildし直さなくてよくなる
database.yml default: &default adapter: mysql2 # encoding: utf8 encoding: utf8mb4 charset: utf8mb4 # <= 追加 collation: utf8mb4_general_ci # <= 追加 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: db #docker-compose.ymlのservice名を記載
下記については解決済
そこでCredentials.ymlの中身を確認しようと”EDITOR=vim bin/rails credentials:edit”のコマンドを打つと、
cannot load such file -- bundler (LoadError)
のエラーが出てしまいます。
bundlerのバージョンに問題があるのかと思い確認すると、
ローカル環境、本番環境共にbundler (2.1.4, 2.0.2)で一致していました。
あなたの回答
tips
プレビュー