0
2

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アプリケーションコンテナとMySQLコンテナの作成と起動方法

Last updated at Posted at 2024-10-14

準備するもの

  • JARファイル(今回はGradleでビルド)
  • Dockerfile
  • docker-compose.yaml

手順

1. JARファイルの作成

gradleのbuildタスクを実行
build/libsフォルダにJARファイルが作成されます。
スクリーンショット 2024-11-29 22.34.41.png

2. Dockerfile と docker-compose.yaml を作成

配置場所
project-root/
├── docker/
│   ├── Dockerfile              # Dockerイメージを構築するためのファイル
│   └── docker-compose.yaml     # Docker Composeでサービスを管理
Dockerfile
# JARファイルを実行するベースイメージとしてAmazon Correttoを使用
FROM amazoncorretto:17

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

# ビルド済みJARファイルをコンテナ内の作業ディレクトリにapp.jarとしてコピー
COPY /build/libs/course-match-0.0.1-SNAPSHOT.jar app.jar

# アプリケーションを実行(コンテナ起動時に実行するコマンドを指定)
ENTRYPOINT ["java", "-jar", "app.jar"]
docker-compose.yaml
version: '3.8'

services:
  app:
    build:
      context: ..  # プロジェクトルートをビルドコンテキストに設定
      dockerfile: docker/Dockerfile  # Dockerfile の場所を指定
    container_name: course_match
    ports:
      - "8080:8080" # ホスト:コンテナ
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://db:3306/course_match_db
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=rootpassword
    depends_on:
      - db # dbコンテナの起動を優先

  db:
    image: mysql:8.0
    container_name: course_match_db
    ports:
      - "3306:3306" # ホスト:コンテナ
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: course_match_db # 起動時に自動的に作成されるデータベースの名前
    volumes:
      - db_data:/var/lib/mysql
      - ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql

volumes:
  db_data:

※ application.propertiesと組み合わせて記載したい場合

docker-compose.yaml(アプリ側の環境設定のみ抽出)
app:
  environment:
    DB_HOST: db
    DB_USER: root
    DB_PASSWORD: rootpassword
application.properties
spring.datasource.url=jdbc:mysql://${DB_HOST}:3306/course_match_db
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWORD}

4. Docker Composeでコンテナをビルド・起動

cd docker # dockerディレクトリに移動
docker-compose up --build

→ JARファイル、Dockerfileをもとに、Dockerイメージを作成し、コンテナとして起動する

5. 確認

  • ブラウザで http://localhost:8080 にアクセスし、Javaアプリケーションが動作しているか確認します。(:8080はホスト側のポート番号)
  • MySQLコンテナはポート3306でリッスンしているので、外部のクライアントからも接続可能
0
2
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
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?