Docker/Dockerfile 9

EXPOSE

✅ 意味EXPOSE は、コンテナ内部でどのポートを使用してプログラムが実行されているかを「文書化」する役割のみを果たします。docker run 時の -p 8080:8080 のようなポートフォワーディング(ポート開放)の役割は一切行いません。簡単に言えば、EXPOSE 命令は記述してもしなくても、コンテナの実際の動作には直接的な影響を与えません。あくまで、このイメージを使用するユーザーに対して「このポートを使っています」と知らせるためのガイドラインとなります。✅ 使い方Dockerfile# 文法EXPOSE [ポート番号]# 例EXPOSE 3000

Docker/Dockerfile 2026.03.15

WORKDIR

✅ 意味WORKDIR で作業ディレクトリを切り替えると、それ以降に記述されるすべての RUN, CMD, ENTRYPOINT, COPY, ADD 命令は、そのディレクトリを基準に実行されます。作業ディレクトリをあえて指定する理由は、コンテナ内部のフォルダを整理して管理するためです。コンテナもミニコンピュータと同じであるため、Dockerfile を通じて生成されるファイルを特定のフォルダにまとめておいた方が、後々の管理が容易になります。もし WORKDIR を使用しない場合、新しく作成したファイルがコンテナ内部の既存ファイルと混ざってしまいます。✅ 使い方Dockerfile# 文法WORKDIR [作業ディレクトリとして使用する絶対パス]# 例WORKDIR /usr/src/app🎯 例題1. app.txt, src (フォルダ), config.json ファイルを作成..

Docker/Dockerfile 2026.03.15

RUN

✅ 意味RUN は、Docker イメージを生成(ビルド)する過程でコマンドを実行したい場合に使用します。✅ 使い方Dockerfile# 文法RUN [実行コマンド]# 例RUN npm install✅ RUN vs ENTRYPOINTRUN コマンドと ENTRYPOINT コマンドは、どちらもコマンドを実行するため混同しやすいですが、その用途は明確に異なります。RUN:イメージ生成過程(ビルド時)で必要なコマンドを実行するときに使用します。ENTRYPOINT:生成されたイメージを基にコンテナを生成(起動)した直後にコマンドを実行するときに使用します。🎯 例題「ミニコンピュータ(コンテナ)の環境が Ubuntu で構成され、かつ Git がインストールされていてほしい」と仮定します。この環境を構築するために、Dockerfile を活用して Ubuntu と Git がイン..

Docker/Dockerfile 2026.03.15

Spring Bootを Dockerで実行

✅ プロジェクトの設定start.spring.io https://start.spring.io/✅ 簡単なコードの作成AppController@RestControllerpublic class AppController { @GetMapping("/") public String home() { return "Hello, World!"; }}✅ Dockerfile の作成DockerfileFROM amazoncorretto:17# ビルドされた JAR ファイルを app.jar という名前でコピーCOPY build/libs/*SNAPSHOT.jar app.jar# コンテナ起動時に JAR ファイルを実行ENTRYPOINT ["java", "-jar", "/app.jar"]✅ 実行手順1. Spring Boot プロジェ..

Docker/Dockerfile 2026.03.15

ENTRYPOINT

✅ 意味ENTRYPOINT は、コンテナが生成され、最初に起動する際(実行時)に処理されるコマンドを指します。簡単に説明すると、ENTRYPOINT には「ミニコンピュータの電源を入れた直後に実行したいコマンド」を記述すればよいです。✅ 使い方Dockerfile# 文法ENTRYPOINT ["実行コマンド", "パラメータ1", "パラメータ2"...]# 例ENTRYPOINT ["node", "dist/main.js"]🎯 例題DockerfileFROM ubuntu# コンテナ起動時に「hello」と出力するENTRYPOINT ["/bin/bash", "-c", "echo hello"]

Docker/Dockerfile 2026.03.15

COPY : ファイルのコピー

✅ 意味COPY は、ホストコンピュータにあるファイルをコピーして、コンテナ内へ転送する役割を果たします。✅ 使い方# 文法COPY [ホスト側のコピー元パス] [コンテナ側のコピー先パス]# 例COPY app.txt /app.txt🎯 ファイルをコピーしてみる1. app.txt ファイルを作成2. Dockerfile を作成してイメージをビルド、コンテナを実行DockerfileFROM ubuntuCOPY app.txt /app.txt# デバッグ用コード:コンテナを維持させるENTRYPOINT ["/bin/bash", "-c", "sleep 500"] 3. コマンド実行$ docker build -t my-server .$ docker run -d my-server$ docker exec -it [コンテナID] bash$ ls # ファイ..

Docker/Dockerfile 2026.03.13

終了したコンテナに入ってデバッグしたいとき

🧑🏻 プログラミングにおいて、途中で正しく動作しているか確認する習慣は非常に重要です。あるコマンドを入力した後、そのコマンドが正常に実行されたかどうかを確認する方法を常に探る必要があります。この習慣が身に付くと、どんなコマンドを実行しても、その仕組みを深く理解できるようになります。また、エラーが発生してもすぐに発見できるため、デバッグが格段にスムーズになります。 Docker を使用すると、ほとんどのコードがコンテナの内部で動作します。そのため、どのような過程で処理されたのか、正常に処理されたのかが直接目に見えにくく、それが Docker 学習の難しさの一因となっています。これを解決するために、 2 つの方法があります。docker logs を活用してコンテナのログを確認するdocker exec -it を活用してコンテナ内部に直接入ってみるしかし、上記のうち docker e..

Docker/Dockerfile 2026.03.13

ベースイメージの指定

✅ 意味FROM は、ベースイメージを指定(生成)する役割を果たします。Docker コンテナは、特定の初期イメージを基にして、追加の設定やインストールを行っていきます。この特定の初期イメージがベースイメージです。 新しい Windows パソコンを購入して起動すると、基本プログラム(ブラウザ、ペイント、メモ帳など)がすでに入っています。ベースイメージもそれと同じです。コンテナというミニコンピュータ環境を構築する際、最初からどのような基本プログラムが入っていてほしいかを選択するオプションだと考えれば分かりやすいです。例えば、ある人は JDK がインストール済みの環境を望むかもしれませんし、別の人は Node.js がインストール済みの環境を望むかもしれません。目的に合わせてベースイメージを選択します。✅ 使い方# 文法FROM [イメージ名]FROM [イメージ名]:[タグ名]タグ名を..

Docker/Dockerfile 2026.03.12

Dockerfile とは?

✅ Dockerfile とは?Docker イメージは、Docker Hub を通じてダウンロードして使用することができます。これらの Docker イメージも、誰かが作成して Docker Hub にアップロードしたものです。では、一体どのようにして Docker イメージは作られるのでしょうか? Dockerfile を活用することで Docker イメージを作成することができます。 Docker Hub に公開されているイメージだけでなく、「自分だけのオリジナル Docker イメージ」を作りたい場合があります。例えば、自分で開発した Spring Boot のプロジェクトがあるとします。このプロジェクト自体を Docker イメージとしてパッケージ化したいとき、Dockerfile を活用すれば自分専用の Docker 이미지を作成することが可能になります。 まとめると、Do..

Docker/Dockerfile 2026.03.12

日本語