【Angular v19 + SpringBoot 06】SpringBootの環境構築

【スキル】エンジニア
たけ坊
たけ坊

データベースを扱うバックエンドについて触れていくよ!

フロントエンドと役割を分けて、バックエンドでデータベースを扱うんですね!

たけ坊
たけ坊

まずは環境構築から!

前提

ここまでの流れは下記を参照です!

【Angular v19 + SpringBoot 05】Angular側のAPI連携
たけ坊バックエンドからデータを取得するための準備を進めていくよ!フロントエンドとバックエンドの連携ができるんですね!たけ坊バックエンドはいったんおいて、フロントエンドの内容を進めるよ!前提これまでの流れを知りたい人はこちら!APIを呼び出す...

Spring Bootの環境構築

下記のサイトを参考にSpring Bootの環境構築を行います。

VSCodeのDevContainersでSpringBoot環境を構築

次に、下記のサイトを参考にSpring Bootのプロジェクトを作成します。途中入力するグループIDはcom.painlog、Artifact Idはmanagementとしておきます。

「2. ソースコード修正」以降は行わなくてよいです。

VSCode+Spring Boot環境で"Hello World!"

上記まで完了すると、いろいろなフォルダが作成されています。

pain-log-management/
├── .devcontainer/
├── pom.xml

その中にpom.xmlが存在します。その<dependencies>の部分を以下のように書き換えます。

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
	</dependencies>

ひとまずここまでです。

Docker

開発環境をすぐに作成するために、Dockerを活用します。まずは、下記のようなディレクトリ構成でファイルを作っておきます。

pain-log-management/
└── .devcontainer/
    ├── devcontainer.json
    ├── docker-compose.yml
    ├── docker/
    │   └── Dockerfile
    └── .env

devconteiner.json、docker-compose.yml、Dockerfileを以下のように記入します。

devcontainer.json

{
    "name": "management",
    "dockerComposeFile": "docker-compose.yml",
    "service": "management",
    "workspaceFolder": "/management",
    "extensions": [
        "vscjava.vscode-spring-boot",
        "vscjava.vscode-java-pack"
    ]
}

docker-compose.yml

version: '3.8'
services:
  db:
    image: mysql:8.0
    container_name: db
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    ports:
      - "49497:3306"
    volumes:
      - mysql-data:/var/lib/mysql
    networks:
      - management-network

  management:
    build:
      context: ..
      dockerfile: .devcontainer/docker/Dockerfile
    container_name: management
    ports:
      - "8081:8080"
    volumes:
      - ../:/management
    command: sleep infinity
    networks:
      - management-network
    tty: true
    depends_on:
      - db

volumes:
  mysql-data:

networks:
  management-network:
    external: false

Dockerfile

FROM mcr.microsoft.com/devcontainers/java:1-17-bookworm

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
    default-mysql-client \
    maven \
  && rm -rf /var/lib/apt/lists/*

# 環境変数を設定
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# 環境変数を永続化
RUN echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> /root/.bashrc && \
    echo 'export PATH=$JAVA_HOME/bin:$PATH' >> /root/.bashrc

# デフォルトのコマンド(コンテナを継続的に動作させるため)
CMD [ "sleep", "infinity" ]

そして、今回使用するデータベースMySQLのログイン情報を記載しておくための.envファイルは下記のように設定しておきます。

MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=mydatabase
MYSQL_USER=tkbo
MYSQL_PASSWORD=mypassword

DevcontainerのRebuildを行います。以下を参考にRebuild Containerを行ってください。

これでバックエンドの環境構築が終了しました!

次のステップ

MySQLのテーブルを作成します!

タイトルとURLをコピーしました