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

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

ただいまの
回答率

87.37%

dockerを用いて開発をする流れやメリットがわかりません

受付中

回答 2

投稿

  • 評価
  • クリップ 3
  • VIEW 648

score 4

いまいちdockerコンテナで開発を進める時の流れがわかりません。
色々調べているとこんな感じになるのかなと思った流れを下に書きます。

例えばrailsアプリ(なんでもいいですが)を開発する場合
1、railsの基本セットが入っているimageをダウンロードしてきて、コンテナ化する
2、exec -it /bin/bash で入ってsftpなど無いのでatom等のテキストエディタも使わずひたすらvim等で開発する(コンテナにsshdやsftpを入れるのはよくないという意見を見た)
3、その日の開発が終わったら進んだ状況をimage化して保存
4、次の日は昨日保存したimageを読み込みrunしてexec

変更するであろうデータは-vでマウントしたフォルダにおくというのがありましたが、railsアプリともなると大量のディレクトリを弄る事になると思うのですが、全部いちいち-v hoge:aなどとやっていくのでしょうか?

既に完成しているものをちゃちゃっと使うにはdockerが便利だと理解できるのですが、自分が開発すると考えるととっても開発しづらい環境に思えてなりません。(コンテナにsftpやsshdを入れないと既存のguiツールなども全く使えないし、入れるとどんどんコンテナが非マイクロサービス化していく)

dockerを利用して開発をする時の流れを知っている方がいらっしゃいましたら教えて頂きたく思います。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

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

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

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

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

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

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

+3

別の方が書いてるとおり、どうしてそういう使い方をすると思ったのかは謎。

dockerというか、コンテナ型仮想化を使うメリットは、環境を丸ごと再現可能で比較的軽量であるという一点。

例えば、開発中のモノ以外に2つのプロジェクトをメンテする必要があるとする。

  • プロジェクトAはフレームワークのバージョンX
  • プロジェクトBはフレームワークのバージョンY
  • プロジェクトCはフレームワークのバージョンZ

を使っているとする。

あなたは普段プロジェクトAをメインに開発しており、フレームワークのバージョンXをインストールしているとする。
でも突発的にプロジェクトBやCも手を入れる必要がある時、どうするのか?という問題。

まぁRubyとか独自にバージョン管理ツールがあるものであればそっちで切り替えてもいいけど、そうもいかない場合もある。

その場合、いちいちマシンにインストールされているフレームワークをインストールし直してバージョンを変える方法もあるし、バージョン毎にVirtualBoxやVMWareなどで仮想マシンを作って作業してもいいけど、コンテナ(docker)でやった方が遥かに簡単。

2、exec -it /bin/bash で入ってsftpなど無いのでatom等のテキストエディタも使わずひたすらvim等で開発する(コンテナにsshdやsftpを入れるのはよくないという意見を見た)
3、その日の開発が終わったら進んだ状況をimage化して保存
4、次の日は昨日保存したimageを読み込みrunしてexec

こんなことは普通やらない。
プログラムを動作させるために必要なコンテナを作ったら、あとはそれを使い回すだけ。

コードの修正とかはコンテナの外でやって成果物だけマウントする。
コンテナはあくまで実行環境。

変更するであろうデータは-vでマウントしたフォルダにおくというのがありましたが、railsアプリともなると大量のディレクトリを弄る事になると思うのですが、全部いちいち-v hoge:aなどとやっていくのでしょうか? 

それが面倒ならリポジトリのReadmeあたりに定型コマンド書いておいてコピペしても良いし、スクリプト書いておいても良いし、docker-composeを使っても良いし、開発ツールの支援機能(VSCodeなど)を使っても良い。やり方は色々ある。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

??? 何を見たらそんな使い方になるのか全く分からない。
誰もそんな使い方はしてない。

Docker以前に調べ方から壮大に間違ってるのでDockerのことは忘れたほうがいい。
Dockerの前に学ぶことが大量に残ってる。

今のプログラミング界隈の常識
・検索するな
・個人ブログは見るな
・初心者が初心者に教えてる地獄
・公式だけ見ろ

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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