@daigo01090118 (daigo ikeda)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

docker-compose exec web rails db:createができない

問題点

表題の通りです。

docker-compose exec web rails db:cretateができません。
それに付随してmigrateもできません。
その他のbuildやupはできています

➜  everydayrails-rspec-2017 git:(master) ✗ docker-compose exec web rails db:create
container everydayrails-rspec-2017_web_1 not running

目に見えてわかるようなエラー、(syntaxerrorやargumenterrorなど)ならどこが悪いのかどう対処したら良いのかパッと思いつくのですが、このnot runnningは調べてもそれっぽい記事がなく困っています。

すいませんが回答いただいても良いでしょうか?
よろしくお願いします。

0 likes

2Answer

container everydayrails-rspec-2017_web_1 not running

execは稼働中のコンテナを指定してコマンドを実行するので、稼働してないコンテナには何を言っても動きません。

docker-compose ymlの中身です

がdatabase.ymlの中身っぽいですが、要はrailsのコンテナ内に入ってコマンドを実行すればいいので、

$ docker-compose run --rm web bash # webサービスコンテナでbashを実行
$ # ここで表示されるプロンプトはwebサービスコンテナ内のbash
$ which rails
$ rails --version
$ rails db:create
$ exit # でホストに戻れる(bashを終了→サービス終了→ホスト)

という風にdocker-composeから直接コマンドを打つ(ブラックボックスっぽい)のではなく、コンテナ内に入ってからコマンドを打つほうが直感的に分かりやすいと思います。

1Like

Comments

  1. @daigo01090118

    Questioner

    そういうことだったんですね!
    dockerのことまだ全然理解できてないですね、すいません
    無事migrateまでできました!

docker-compose.ymlの中を貼っていただけますか?

docker-compose exec web bashとかで中に入って検証すると良いと思います。

0Like

Comments

  1. @daigo01090118

    Questioner

    docker-compose ymlの中身です
    ```
    database: db/production.sqlite3

    default: &default
    adapter: mysql2
    pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
    timeout: 5000
    username: root
    password: password # docker-compose.ymlのMYSQL_ROOT_PASSWORDで指定したもの
    host: db # docker-compose.ymlのサービス名

    development:
    <<: *default
    database: development_database

    # 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: test_database

    production:
    <<: *default
    database: production_database
    ```
  2. @daigo01090118

    Questioner

    docker-compose exec web bash
    実行しても
    こんなふうになります。
    ```
    ➜ everydayrails-rspec-2017 git:(master) ✗ docker-compose exec web bash
    container everydayrails-rspec-2017_web_1 not running
    ```

Your answer might help someone💌