1. MongoDBのインストール
1. MongoDB公式サイトへアクセス
2. Community Editionを選択し、インストーラーをダウンロード
3. インストーラーを実行し、以下の設定を選択
・MongoDB Serverをインストール
・MongoDB Compass(GUIツール)をインストール(任意)
4. 環境変数を設定
インストール時に自動設定されるが、念のためパスを確認
C:\Program Files\MongoDB\Server\8.0\bin
2. DockerでMongoDBをセットアップ
1. docker-compose.ymlにMongoDBを追加
以下のように記載
networks:
app-network:
driver: bridge
services:
backend:
build: ./backend
ports:
- "8080:8080"
environment:
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILE}
SPRING_DATA_MONGODB_URI: "mongodb://admin:password@mongo:27017/taskmanager"
depends_on:
mongo:
condition: service_healthy
networks:
- app-network
restart: always
frontend:
build: ./frontend
ports:
- "3000:3000"
volumes:
- ./src:/app/src # ローカルのsrcをコンテナの/app/srcにマウント
depends_on:
- backend
networks:
- app-network
restart: always
mongo:
image: mongo:latest
ports:
- "27017:27017"
volumes:
- mongo_data:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: ${MONGO_USERNAME}
MONGO_INITDB_ROOT_PASSWORD: ${MONGO_PASSWORD}
networks:
- app-network
restart: always
healthcheck:
test: ["CMD", "mongosh", "--eval", "db.runCommand({ ping: 1 })"]
interval: 10s
timeout: 5s
retries: 5
volumes:
mongo_data:
この設定で、mongodbというサービスがDockerコンテナ内に作成され、27017ポートでアクセス可能になります。
3.Gradleの設定
backend/とbackemd/app/にあるbuild.gradle.ktsを以下のように記載
backend/build.gradle.kts
plugins {
id("org.springframework.boot") version "3.2.2"
id("io.spring.dependency-management") version "1.1.4"
kotlin("jvm") version "2.1.0"
kotlin("plugin.spring") version "2.1.0"
application
}
repositories {
mavenCentral()
}
dependencies {
implementation(kotlin("stdlib"))
// Spring Boot Essentials
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
// Test
testImplementation("org.jetbrains.kotlin:kotlin-test")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
tasks.withType<Test>().configureEach {
useJUnitPlatform()
}
application {
mainClass.set("org.example.TaskManagerApplication")
}
backend/app/build.gradle.kts
plugins {
id("org.springframework.boot") version "3.2.2"
id("io.spring.dependency-management") version "1.1.4"
kotlin("jvm") version "2.1.0"
kotlin("plugin.spring") version "2.1.0"
application
}
repositories {
mavenCentral()
}
dependencies {
// Kotlin Standard Library
implementation(kotlin("stdlib"))
implementation("org.jetbrains.kotlin:kotlin-reflect")
// Spring Boot Core
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-data-mongodb")
// MongoDB with KMongo
implementation("org.litote.kmongo:kmongo:4.9.0")
// Unit Testing
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(21))
}
}
tasks.withType<Test>().configureEach {
useJUnitPlatform()
}
4. 接続テスト
1. 接続テストコードの配置
backend/app/src/test/kotlin/にMongoConnectionTest.ktというファイルを作成し以下を記載
package com.example.mongodb
import com.mongodb.client.MongoClients
import org.junit.jupiter.api.Test
import kotlin.test.assertNotNull
class MongoConnectionTest {
@Test
fun testMongoConnection() {
val client = MongoClients.create("mongodb://admin:password@mongodb:27017")
val database = client.getDatabase("task_management")
assertNotNull(database, "MongoDBへの接続に失敗しました")
println("MongoDBに接続成功: ${database.name}")
}
}
2. 接続テストの実行
backend/app/で以下コマンドを実行
gradlew test
3. テストレポートの確認
build/reports/tests/test/index.htmlを確認
以上になります。
今後はもう少し、各記載を掘り下げた記事を書いていこうと思います。