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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

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

意見交換

クローズ

5回答

556閲覧

Dockerコンテナ環境の管理の仕方について

tyubo

総合スコア10

docker-compose

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Docker

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

0グッド

0クリップ

投稿2024/07/04 05:05

0

0

テーマ、知りたいこと

Docker環境の管理方法について、一般的あるいは良い方法があればご意見いただきたいです。

背景、状況

自分は駆け出しのプログラマで、最近複数の言語を扱うようになり、ローカルでもなるべくコンテナ環境を使って開発を行おうとしています。

dockerfileを用いて、最低限自身の必要な環境を構築することはできたのですが、直近使用していたプロジェクト以下にあるdockerfileを、新しいプロジェクトを作る時に毎回コピーして使っており、不便さを感じております。

もう少し具体的な例で説明すると、まだ環境構築も発展途上なので、dockerfileにいろんなコードを追加したり削除したり、vscodeの拡張機能などを追加したくなったりするのですが、それが他のプロジェクトでは反映されていなかったり、どれがどれか分からなくなってきて混乱してしまっています。

理想は、常にJavaならJavaの環境を記述したdockerfileの最新版が保存されている場所が合って、Javaのプロジェクトを作った時にそこからdockerfileをDLなのかcloneなのかして、マイナーチェンジをその環境で行うみたいなことがいいのかなと考えています。

解決策

自身で調べたところ、dockerfileをGitHubでバージョン管理をする的な記事は散見されるのですが、それはdockerfile単体でレポジトリを作るという意味なのでしょうか?
dockerfileも含めてプロジェクト単位でGitHubで管理していると、新しいプロジェクトでそのdockerfileだけコピーしてくる流れになってしまいそうでいまいち腑に落ちていません。

また、DockerHubを使う案も考えたのですが、毎回イメージをpushしたりビルドしたりスマートでないなぁという印象を持っていて、もっと良い案があればご教授いただきたいです。よろしくお願いいたします。

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

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

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

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

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

回答5

#1

maisumakun

総合スコア145628

投稿2024/07/04 05:26

DockerHubを使う案も考えたのですが、毎回イメージをpushしたりビルドしたりスマートでないなぁという印象を持っていて

手動でコピーして、どこに何があったかわからなくなる方が、よほど「スマートでない」と感じます。そして、ビルドは何にしても必要です。

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

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

#2

TakaiY

総合スコア13337

投稿2024/07/04 09:34

理想は、常にJavaならJavaの環境を記述したdockerfileの最新版が保存されている場所が合って、Javaのプロジェクトを作った時にそこからdockerfileをDLなのかcloneなのかして、マイナーチェンジをその環境で行うみたいなことがいいのかなと考えています。

自分は、質問にも書いてあるように、gitで管理しています。
dockerファイル以外のものもまとめて管理しているので、目的ごとに別のリポジトリを作っています。
目的によっては、複数のdockerファイルを1つのリポジトリで管理するのもいいと思います。

docker hubにあるイメージはよく利用しますが、自分のものをアップロードしたことはありません。

毎回イメージをpushしたりビルドしたりスマートでないなぁ

自分の作業環境、特にUNIX系の、は、自分のやりやすいようにいろいろ調整しながら 維持管理していくものだと思ってやってきていて、最近はgitで管理できるようになってかなりスマートになったと思っていました。

よりスマートな状況というのがどんな状態を想定しているのか、聞いてみたいですね。

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

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

#3

tyubo

総合スコア10

投稿2024/07/05 10:02

@maisumakunさん
ご回答ありがとうございます。
Dockerイメージにしてファイルサイズを大きくして管理するよりも、GitHubのようなドキュメントベースでできた方がわかりやすくて良いなと思ったという表現のつもりでした。おっしゃるように今の状態の方がスマートでないと自分も感じております。

@TakaiYさん
GitHubで管理されている場合はどのようにお使いになられているのでしょうか。自分の浅い知識だと「GitHubでcloneすると、dockerfileを管理してるリモートリポジトリとローカルリポジトリが紐づけられてしまうのでは。。」と思ってしまうのですが、他に良い方法があるのでしょうか。
そのようにならない方法があるのであれば、自分もGitでの管理が一番いいような気がしております。

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

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

#4

TakaiY

総合スコア13337

投稿2024/07/05 10:53

「GitHubでcloneすると、dockerfileを管理してるリモートリポジトリとローカルリポジトリが紐づけられてしまうのでは。。」

gitで管理するのと、GitHubをセントラルリポジトリとして使うのは目的が違うので一緒くたにしないほうがよいかと。

GitHubを使うのは、自機の障害などに対応するためのバックアップや、チームでの共有が目的です。(本来は公開も)
gitで管理するのは、変更履歴を管理するためです。また、関連する複数ファイルを関係を保ったまま管理できます。

運用をどのようにするかは、目的によるでしょう。
自分は、dockerの場合、テンプレートの管理を目的にしているので、gitのリポジトリそのものをdockerの環境としてつかうということをしません。テンプレートなので、質問にもあるようにカスタマイズが必要ですし、複数立ち上げることが多いいですから、リポジトリからコピーしたものを使います。
汎用性が高いと判断したものは、 リポジトリに反映させていきます。そのあたりは面倒と言えば面倒ですね。dockerインスタンスごとにリポジトリを複製して、それぞれ別ブランチとして運用して有用なものをメインブランチにチェリーピックみたいなことをするのもありかもしれませんね。

自分はホームディレクトリは、コピーではなくgitのリポジトリとして構成を管理しています。対象はドットファイルやエディタの設定などです。 GitHubをバックアップや複数拠点での共有のために使っています。

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

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

#5

tyubo

総合スコア10

投稿2024/07/07 01:26

@TakaiYさん

ご丁寧な解説ありがとうございます。

確かにgitとGitHubを混同するのはよくないですね。自分の知識と認識が足りなく、混同して使用しておりました。

また、gitで管理してコピーして使うというアドバイスをいただき、ひとまずそれで運用してみたいと思います。自分だけではそのような運用が正しいのか否か判断が付かなかったので大変参考になりました。ありがとうございました。

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

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

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問