0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker入門 — コンテナって何?Javaエンジニアが知るべき基礎

0
Posted at

Docker入門 — コンテナって何?Javaエンジニアが知るべき基礎

はじめに

Dockerはアプリをコンテナという単位でパッケージ化して動かす仕組みです。

「自分のPCでは動くのに本番では動かない」という問題を解決できます。AWSのECSやFargateもDockerコンテナをベースにしています。


コンテナとは

比較 仮想マシン(VM) コンテナ
起動速度 数分 数秒
サイズ GBオーダー MBオーダー
独立性 OSごと分離 OSカーネルを共有
用途 完全な環境分離 アプリの軽量パッケージ化

主な用語

用語 説明
イメージ コンテナの設計図。docker buildで作る
コンテナ イメージを起動したもの。実際に動く実体
Dockerfile イメージを作るための設定ファイル
Docker Hub イメージの公開レジストリ(GitHubのDocker版)

Spring BootアプリのDockerfile

# ベースイメージ(Java 21)
FROM eclipse-temurin:21-jre

# 作業ディレクトリ
WORKDIR /app

# JarファイルをコンテナにコピーRun
COPY target/myapp-0.0.1-SNAPSHOT.jar app.jar

# ポートの公開
EXPOSE 8080

# 起動コマンド
ENTRYPOINT ["java", "-jar", "app.jar"]

基本コマンド

# イメージをビルド
docker build -t myapp:latest .

# コンテナを起動
docker run -p 8080:8080 myapp:latest

# 動いているコンテナを確認
docker ps

# コンテナを停止
docker stop <コンテナID>

# Docker Hubからイメージを取得
docker pull mysql:8.0

docker-composeでローカル開発環境を作る

Spring Boot + MySQLの構成をdocker-composeで一発起動できます。

# docker-compose.yml
version: '3.8'

services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/mydb
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=password
    depends_on:
      - db

  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=mydb
    ports:
      - "3306:3306"
# まとめて起動
docker compose up -d

# まとめて停止
docker compose down

まとめ

やること コマンド/ファイル
イメージ作成 Dockerfile を書いて docker build
コンテナ起動 docker run -p 8080:8080 myapp
複数サービス docker-compose.ymldocker compose up
イメージ取得 docker pull mysql:8.0

Dockerを使うとJavaアプリのデプロイがJarファイルではなくコンテナイメージになります。AWSのECS/Fargateへのデプロイも同じDockerイメージを使います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?