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

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

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

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

Docker

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

Q&A

解決済

1回答

464閲覧

Docker環境での railsAPIの作成時の rails db:seed について

mika2002

総合スコア20

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/05/24 02:47

質問させて下さい、、

Docker環境でRailsAPIを作成するにあたって、

https://nakatanorihito.com/programming/docker-rails-postgresql/
https://qiita.com/yoshimo123/items/9aa8dae1d40d523d7e5d
https://qiita.com/k-penguin-sato/items/adba7a1a1ecc3582a9c9

こちらを参考に進めました。

それで、
コンテナ内でrails db:seedし
curlコマンドや、postmanでレスポンスを確認できるところまでなんとか進める事ができた状態なのですが、

ここで気になったことが、
seeds.rbファイルを変更する度に、

docker-compose down --rmi all --volumes
等をして、完全に削除?

してから再度

docker-compose build
docker-compose up

をして、違うターミナルで

docker-compose exec api bash

コンテナに入り、

rails db:create
rails db:migrate
rails db:seed

という事をしないといけないものなのでしょうか?

そのあたりのDocker環境での開発での考え方について、アドバイスいただけると大変嬉しいです。。
すごい非効率的なことをしている気がしてなりません、、

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

Dockerイメージはある状態を保存することができます。例えば、rails db:seedまで実行して docker saveすると、そこまでコンテナ内で実行した状態をイメージとして保存することができます。
これまではdocker-compose.yml内で与えられたDockerイメージを指定してdocker-compose upされていると思いますが、これを自分で作成したイメージで起動することができます。

以下コマンドを検索いただけると効率UPになると思われます。
docker save
docker load
docker tag

投稿2020/05/24 08:18

yurak

総合スコア160

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

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

unoSSkR

2020/05/24 09:37 編集

Sorry to say this answer is not appropriate. Should be clear where the database is. A better answer is to learn how to use volume or mount to persist user data permanently. See https://docs.docker.com/storage/ for more details.
mika2002

2020/05/24 16:51

yurakさん、ご回答ありがとうございます! rails db:seedが問題なく実行できた場合、そこで、docker saveすると、 それ以降、docker-compose upする際は、そのsaveしたデータの状態で、起動できる、という認識で間違っていないでしょうか? また、教えて頂いた。 >docker save >docker load >docker tag こちらのキーワードで調べたのですが、あまり記事が多くなく理解するまで、たどり着くことができませんでした。。 こちらの記事を見たのですが、 http://www.tohoho-web.com/docker/docker_export.html load,tagはなにをするためのものなのでしょうか? また教えて頂けると嬉しいです。
mika2002

2020/05/25 17:44

ありがとうございます! 確認致します。
unoSSkR

2020/05/26 01:10

Really? I don't think so using save-load method is useful for large groups. Those commands would be used to relocate server only when necessary or backup containers temporarily. Obviously that those can't be used in daily operation on production environment.
unoSSkR

2020/05/26 01:20 編集

And dare say, it is easy to use that methods for personal development, but it has few advantages when used by many people. Easy to say that once you understand how to use docker volumes or mount, you don't have to use save-load commands at all.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問