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

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

新規登録して質問してみよう
ただいま回答率
87.20%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

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

解決済

docker-compose run web rails db:createを入力しようとした際にエラーが出る

datiko
datiko

総合スコア66

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

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

1回答

0評価

0クリップ

404閲覧

投稿2022/04/20 10:28

現在Dockerについて勉強をしようと思い、
https://www.youtube.com/watch?v=ltDdZAJli8c
上記の動画を参考にDockerの基本アプリを作成しています

docker-compose run web rails new . --force --database=mysql を行い、railsの基本ファイル、ディレクトリを作成
docker-compose buildを行い、イメージの作成
までは進んだのですが、

docker-compose run web rails db:createを行った際エラーになってしまいデータベースを作成しようとしたところ以下のエラーが出てきます。

エラー文を抜粋して見ると

iTerm

Mysql2::Error: Failed to create schema directory 'app_development' (errno: 2 - No such file or directory) Couldn't create 'app_development' database. Please check your configuration. rake aborted! ActiveRecord::StatementInvalid: Mysql2::Error: Failed to create schema directory 'app_development' (errno: 2 - No such file or directory)

そのようなファイルまたはディレクトリはありませんと言われています。

わからない部分

これはどこにファイルまたはディレクトリがありませんと言われているのかがわからず困っております。
わかる方がいらっしゃいましたらご回答、よろしくお願い致します。

以下、関係のありそうなファイルです

docker

version: '3' #dbとwebのサービスを定義 services: db: #msql image: mysql:8.0 command: --default-authentication-plugin=mysql_native_password #認証形式の設定8.0から volumes: - ./src/db/mysql_data:/var/lib/mysql #./src/db/mysql_data(ローカル)を/var/lib/mysql(docker)側に共有する設定(コンテナを作り直すたびにデータが消えてしまうが、これを設定しておけばローカルのデータを持ってこれる) environment: MYSQL_ROOT_PASSWORD: password #(環境変数でパスワードを指定) web: #rails build: . #ベースのイメージとしてDocker fileを参照する設定 command: bundle exec rails s -p 3000 -b '0.0.0.0' #rails サーバーを起動 volumes: - ./src:/app #./src(ローカル)内を/app(Docker)側に共有する ports: - "3000:3000" #ローカルの3000ポートをDockerの3000ポートに接続 depends_on: #webはdbサービスに依存しているという設定 - db

Dockerfile

FROM ruby:2.7 RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \ && echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \ && apt-get update -qq \ && apt-get install -y nodejs yarn #必要なライブラリをインストール WORKDIR /app #作業ディレクトリを指定/app COPY ./src /app #./srcローカル側を/appにコピー RUN bundle config --local set path 'vendor/bundle' \ && bundle install #bundle installをする

datebase.yml

# MySQL. Versions 5.5.8 and up are supported. # # Install the MySQL driver # gem install mysql2 # # Ensure the MySQL gem is defined in your Gemfile # gem 'mysql2' # # And be sure to use new-style password hashing: # https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html # default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: password host: db development: <<: *default database: app_development # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: app_test # As with config/credentials.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password or a full connection URL as an environment # variable when you boot the app. For example: # # DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase" # # If the connection URL is provided in the special DATABASE_URL environment # variable, Rails will automatically merge its configuration values on top of # the values provided in this file. Alternatively, you can specify a connection # URL environment variable explicitly: # # production: # url: <%= ENV['MY_APP_DATABASE_URL'] %> # # Read https://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full overview on how database connection configuration can be specified. # production: <<: *default database: app_production username: app password: <%= ENV['APP_DATABASE_PASSWORD'] %>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Docker

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