質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

0回答

2264閲覧

dockerからrailsコマンドが実行できているように見えるが、実行できない

Manamin

総合スコア14

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2019/09/06 18:08

編集2022/01/12 10:55

なぜか実際には生成されていない

コンテナ(コンソール上)では問題なくコントローラーが生成されているように見えるのですが、
ローカルのファイル数に何の変更もないです。(生成されてない?)
migrationファイルを追加してもコンソールでは追加されているように見えるのですが、エディタで見ても反映されてないです。

~/rails ❯❯❯ docker-compose up -d Creating network "rails_default" with the default driver Creating rails_db ... done Creating rails_app ... done ~/rails ❯❯❯ docker-compose run rails rails generate controller users Starting rails_db ... done create app/controllers/users_controller.rb invoke erb create app/views/users invoke test_unit create test/controllers/users_controller_test.rb invoke helper create app/helpers/users_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/users.coffee invoke scss create app/assets/stylesheets/users.scss

vimコマンドで編集しても上記ファイルはありませんし、別のディレクトリにも存在してません。
(mac内すべてで検索しても見つからない)

なぜこのようなことが起こっているのでしょうか?
docker-compose runでrails_app側のコンテナが起動してないからでしょうか?(なぜdb側だけstartしてるのでしょうか)

docker-compose run rails rails generate controller usersを
docker exec rails rails generate controller usersに変更してもだめです

以下dockerの設定ファイルです

docker

1 2version: '2' 3services: 4 rails: 5 build: . 6 image: my/rails5.2 7 container_name: 'rails_app' 8 ports: 9 - "8080:3000" 10 environment: 11 APP_ROOT_PASSWORD: 'development' 12 APP_DATABASE: 'example' 13 APP_DATABASE_USER: 'app' 14 APP_DATABASE_PASSWORD: 'development' 15 command: bundle exec rails s -p 3000 -b '0.0.0.0' 16 tty: true 17 volumes: 18 - ./src:/app 19 depends_on: 20 - db 21 22 db: 23 image: mysql:5.7 24 container_name: 'rails_db' 25 environment: 26 MYSQL_ROOT_PASSWORD: 'mysql' 27 MYSQL_DATABASE: 'rails_app' 28 MYSQL_USER: 'app' 29 MYSQL_PASSWORD: 'password' 30 ports: 31 - "33006:3306" 32 volumes: 33 - db-volume:/var/lib/mysql 34 35volumes: 36 db-volume : 37 driver: local

Dockerfile

1FROM ruby:2.5 2 3ENV LANG C.UTF-8 4ENV WORKSPACE=/usr/local/src 5 6# install bundler. 7RUN apt-get update && \ 8 apt-get install -y \ 9 vim \ 10 less \ 11 build-essential \ 12 libpq-dev nodejs \ 13 && \ 14 apt-get clean \ 15 && \ 16 rm -rf /var/lib/apt/lists/* 17 18RUN gem install bundler 19 20# create user and group. 21RUN groupadd -r --gid 1000 rails && \ 22 useradd -m -r --uid 1000 --gid 1000 rails 23 24# create directory. 25RUN mkdir -p $WORKSPACE $BUNDLE_APP_CONFIG && \ 26 chown -R rails:rails $WORKSPACE && \ 27 chown -R rails:rails $BUNDLE_APP_CONFIG 28 29USER rails 30WORKDIR $WORKSPACE 31 32# install ruby on rails. 33ADD --chown=rails:rails src $WORKSPACE 34RUN bundle install

database.yml

1 2# MySQL. Versions 5.1.10 and up are supported. 3# 4# Install the MySQL driver 5# gem install mysql2 6# 7# Ensure the MySQL gem is defined in your Gemfile 8# gem 'mysql2' 9# 10# And be sure to use new-style password hashing: 11# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html 12# 13default: &default 14 adapter: mysql2 15 encoding: utf8 16 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> 17 username: root 18 password: mysql 19 host: db 20 port: 3306 21 22development: 23 <<: *default 24 database: src_development 25 26# Warning: The database defined as "test" will be erased and 27# re-generated from your development database when you run "rake". 28# Do not set this db to the same as development or production. 29test: 30 <<: *default 31 database: src_test 32 33# As with config/secrets.yml, you never want to store sensitive information, 34# like your database password, in your source code. If your source code is 35# ever seen by anyone, they now have access to your database. 36# 37# Instead, provide the password as a unix environment variable when you boot 38# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database 39# for a full rundown on how to provide these environment variables in a 40# production deployment. 41# 42# On Heroku and other platform providers, you may have a full connection URL 43# available as an environment variable. For example: 44# 45# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" 46# 47# You can use this database configuration with: 48# 49# production: 50# url: <%= ENV['DATABASE_URL'] %> 51# 52production: 53 <<: *default 54 database: src_production 55 username: src 56 password: <%= ENV['SRC_DATABASE_PASSWORD'] %>

docker ps結果

~/rails ❯❯❯ docker ps ✘ 1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4a7396fd5d9c my/rails5.2 "bundle exec rails s…" 15 minutes ago Up 15 minutes 0.0.0.0:8080->3000/tcp rails_app 3c7da423c798 mysql:5.7 "docker-entrypoint.s…" 15 minutes ago Up 15 minutes 33060/tcp, 0.0.0.0:33006->3306/tcp rails_db

docker images結果

~/rails ❯❯❯ docker images REPOSITORY TAG IMAGE ID CREATED SIZE my/rails5.2 latest 9a97023662de About an hour ago 1.05GB <none> <none> 7c0749ddf7a8 39 hours ago 1.05GB 180499926846.dkr.ecr.ap-northeast-1.amazonaws.com/mysql latest f96ad5bcb367 44 hours ago 2.61GB

コピーしてみるもコンテナ内にも存在しておらず

~/rails ❯❯❯ docker cp rails_app:app/controllers/users_controller.rb app/controllers/users_controller.rb Error: No such container:path: rails_app:app/controllers/users_controller.rb

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問