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

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

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

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

Q&A

1回答

981閲覧

Dockerコンテナでの①開発・②テスト・③ステージング・④本番環境の作成の一般的な作成パターンについて

kamakiriad

総合スコア25

Docker

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

1グッド

5クリップ

投稿2018/03/03 14:16

編集2018/03/08 14:14

Docker/プログラミング初心者です。
開発環境にDockerを導入することを本格的に検討しています。

Dockerを使ったシステムの開発・テスト・本番環境のデプロイの際に一般的に取られる方法をご教示頂きたく質問いたします。

個人的には以下のような流れかと考えていますが、違う点についてご指摘頂きたく存じます。

#■①-1: 1人目のDockerコンテナを使った開発環境の構築
①手元のPCなどでコードを作成(ex. HelloWorld.java)
②手元のPCでコンテナ作成+コンテナを作成するときにHelloWorld.javaがある手元のPCをコンテナにマウント
③コンテナ内に開発環境・実行環境に必要なパッケージをインストール
④コンテナにマウントしたディレクトリ内にあるHelloWorld.javaをコンパイル・実行

#■①-2: ①-1を行った人が開発環境・実行環境をチームの他の人に配布するためのDockerfileの作成
①Dockerfileを作成

FROM centos:7 RUN yum install ...(開発環境・実行環境のインストール) ADD HelloWorld.java /ソースコード配置先ディレクトリ

②HelloWorld.javaとDockerfileをGitHubのリポジトリにpush
③他のチームの人間はgit cloneでHelloWorld.javaとDockerfileとローカルにコピー
④HelloWorld.javaを編集、Dockerfileをビルドしてイメージ作成→コンテナ作成してHelloWorld.javaを実行
(コードはDockerコンテナ外の手元のPCで編集して、コンテナ内ではコンパイルと実行のみイメージしていますが、この点も変であればご指摘頂ければ大変幸いです)
⑤完成したHelloWorld.javaとDockerfileをGitHubのリポジトリにpush

#■②: テスト環境の構築
① ①-2の⑤でGitHubにpushしたHelloWorld.javaとDockerfileを元にイメージ作成→コンテナを作成してコンテナに対してテスト実施
② テストに成功したら、別のGitHubのリポジトリにテストに成功したHelloWorld.javaとDockerfileをpush

#■③と④: ステージング・本番環境の構築
① ②の②でテストに成功したHelloWorld.javaとDockerfileをgit cloneでステージングまたは本番環境にコピー
② ①でコピーしたDockerfileを元にイメージ作成→コンテナ作成してステージングまたは本番環境をデプロイ



以上のイメージを持っているのですが、違う点やもっとこうした方がいいなどありましたらご教示頂ければ幸いです。

また、付随する内容について2点質問いたします。



#■追加質問①
DockerfileでFROMで使うのは信頼できるオフィシャルのイメージを指定するのが一般的で、DockerHubにpushした独自イメージはあまり指定しないのでは、と思っているのですが、その認識であっていますでしょうか?

 


どうぞ宜しくお願いいたします。

bassbone👍を押しています

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

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

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

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

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

guest

回答1

0

Dockerを使ったシステムの開発・テスト・本番環境のデプロイの際に一般的に取られる方法をご教示頂きたく

開発環境だけでなく本番環境までとなると、使用するサービスによって流れが変わってくるので、ご質問に対する一般回答はできません。
本場運用まで想定されるなら、最低でも以下のサービスは必須になってくるので、まずそちらの選定から始めてください。

  • プラットフォーム(ECS、VPS等)
  • Dockerレジストリ(DockerHub等)
  • CI/CDツール(CircleCI等)

また、上記何パターンもの組み合わせで、全て一般回答できる人はおそらくいないと思いますので、使用するサービスをある程度決めた上で、質問すると回答が付きやすいと思います。

開発環境だけでしたらある程度の一般回答ができます。ご質問には出てこなかったですがdocker-composeを使った開発が一般的です。
ざっくりした流れに関しては、先日関連する質問がありましたので、参考になれば幸いです。
https://teratail.com/questions/125243

DockerfileでFROMで使うのは信頼できるオフィシャルのイメージを指定するのが一般的で、DockerHubにpushした独自イメージはあまり指定しないのでは、と思っているのですが、その認識であっていますでしょうか?

独自イメージというのを「オフィシャル以外のイメージ」のことを言っているのか「自分たちで作ったイメージ」のことを言っているのかわかりませんが、本番運用まで想定されている場合、前者は極力使用しないほうが良いでしょう。
後者は、本番運用する場合、プライベートなDockerレジストリで自分たちのイメージを管理するというのは一般的です。

投稿2018/05/20 16:20

xenbeat

総合スコア4258

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

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

kamakiriad

2018/06/02 07:58

回答ありがとうございます。 さまざまなパターンを知りたいと思っているので、使用するサービスは何でも構いません(記載されたサービスでも構いません)。 「独自イメージ」は、「DockerHubにpushした独自イメージ」と記載したとおり「アンオフィシャル」という意味ではなく、後者の「自分たちで作ったイメージ」という意味です。海外の文書や記事でcommitやpush関連でoriginal imageという文言を見た記憶があったり、AWSだとカスタムAMIのことを「独自に作成したAMI」と説明で言ったりするのですが、Dockerではあまり使わないのですね。
xenbeat

2018/06/02 08:37 編集

> さまざまなパターンを知りたいと思っているので、使用するサービスは何でも構いません 「問題・課題が含まれていない質問」として推奨されない質問となります。 https://teratail.com/help/avoid-asking なにか困っているのであれば、回答にも記載しましたが「使用するサービスをある程度決めた上で」再質問されてください。 > 「独自イメージ」は、「DockerHubにpushした独自イメージ」と記載したとおり「アンオフィシャル」という意味ではなく、後者の「自分たちで作ったイメージ」という意味です そちらの意味ですね。いずれにせよ、回答に記載したとおりです。 「オフィシャルのイメージを指定するのが一般的で、DockerHubにpushした独自イメージ」 と横並びに記載されていたので、個人的に空気が読めませんでした。
kamakiriad

2018/06/21 16:33 編集

https://teratail.com/help/avoid-asking を見ても、私がしている質問が「推奨されていない質問」とどうしても読み取ることができなかったため、Teratailのサポートチーム様に問い合わせました。 結果、正式に「使用されている技術や知りたい点について記載されているため、不適切な質問であるとは判断いたしません」との回答を頂きました。 「不適切」と判断されるのであれば質問を取り下げようと思ったのですが、大変有難いご回答を頂戴しましたのでこのまま質問は継続することにいたします。繰り返しですが、さまざまなパターンを知りたいためご自身のご経験の中で構いませんので、ご教示いただければ大変幸いです。 なお、余計なことかもしれませんがTeratailのサポートチーム様から「気持ちの良い問題解決ができるコミュニティ作り」をしていきたいという言葉も頂戴いたしました。個人的に今回このような指摘をmaverixzさんから受け、少なからず不快な思いをいたしました。 私以外の方々にもご自身の判断基準で様々な注意をされているようですが、様々な文言を正確に読み取れない以上、ほかのユーザに対しての私刑的な行動をされるのは少し考えられた方がいいと思うのですが、いかがでしょうか。ご検討いただければ幸いです。
xenbeat

2018/06/22 01:08

まず不快な思いをさせたようで失礼しました。 > 正式に「使用されている技術や知りたい点について記載されているため、不適切な質問であるとは判断いたしません」との回答を頂きました。 はい、その回答には同意します。だからマイナス評価つけることなく回答しております。 私の説明不足だったかもしれませんが、私が指摘したのは「質問本文」ではなく、インラインでコメントしている通り、「回答本文に対するコメント」です。 一般回答出来ませんとしているのに、それを無視するようなかたちで「使用するサービスは何でも構いません」とか「記載されたサービスでも構いません」とか、さらに先程のコメントで > 繰り返しですが、さまざまなパターンを知りたいためご自身のご経験の中で構いません とか、、、これらのコメントを受けて「推奨していない質問」に記載されている「オススメの開発環境構築方法を教えてください」と同等の質問だと私は受け取りそのようなコメントをしました。 さまざまなパターンを知りたいため「オススメの開発環境構築方法を教えてください」と質問言い換えても違和感ないのではないでしょうか。 少なくとも回答者である私には違和感なく「推奨していない質問」と同等の質問と受け取りました。 例えば「Javaのシステム開発フローを教えてください」とかも同等な質問だと思っていて、この手の質問は、質問者の環境(例えば受託会社と事業会社でも開発環境や開発フローが違ったりする)や使用できるサービス(前述の通り)によって回答が大きくブレます。 > このまま質問は継続することにいたします。 であれば他の方から回答がつくように質問を編集されてはいかがでしょうか。 「さまざまなパターンを知りたいため」という目的が質問本文ではなくコメントにさりげなく出てきてますが、この目的達成のためにご自身で何をされたのでしょうか。実際になにか作業に取り組まれたのでしょうか。そしてその過程でどこでつまづいたのでしょうか。 私の回答は記載した通りなので「推奨していない質問」の話は別として、ここを明記されると回答がつくかもしれないです。 まずは「さまざまなパターンを知る」という質問のゴールをコメントでなく質問本文に追記されてみてはいかがでしょうか。 > 私以外の方々にもご自身の判断基準で様々な注意をされているようですが、様々な文言を正確に読み取れない以上、ほかのユーザに対しての私刑的な行動をされるのは少し考えられた方がいいと思うのですが、いかがでしょうか。 いかがもなにも、どの質問のどの内容のことを指しているのかわからないのですが… まあそれもあなたの判断基準なので、それこそTeratailのサポートチームに問い合わせてみてはいかがでしょうか。ご検討いただければ幸いです。
kamakiriad

2018/06/22 18:00 編集

大切な時間を費やす気はないので手短に。 - 繰り返しですが、私刑的な行動は不快です。推奨しない質問であるかどうかの指摘はあなたが言うことではなく、言うのであれば運営側がすることです。またご自身がそのような行動をしていることを気づいていないということも驚きです。 - 質問・このスレッドに対してTeratail様から問題ないと回答を頂いています。 - 自分の都合のいいように話を強引に持っていってますが、それでは話ができません。また、あなたのエクスキューズと批判の文言に興味はありませんし、記載の内容も意味が分かりません。 - たとえば質問の編集の提案を受けましたが、「さまざまなパターンを知る」という文言を質問本文に登録すると、あなたの言う「推奨されていない質問」に含まれることになり、完全に矛盾していますが。何を言っているのか分かりません。提案は却下します。 - コメントがつきやすいように初心者と書きましたが、Dockerでかなり様々なことを行っています。ただ、非常に特徴的なことを行っており、身元が分かってしまうのとそこで行っていることを出すわけにもいかないので、私がやったことをここで書くことはできません。 なお、次に文句が出たら、この件についてこれ以上時間を費やす気はないので質問は取り下げ、退会します。それも妥当なことをしていると判断され、私刑的に処罰したいようでしたら、どうぞご自由に。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問