🐥

PaaS | Render.com | Java | Spring Boot | Docker | PostgreSQL | github

2024/12/15に公開

Java

PaaS

Render.com

Cloud Application Platform | Render

  • GitHubアカウントが使える。

基本

"Create a new Service"でプロジェクトを作成し、そこにアプリとデーターベースを作成する準備をする。

名称 内容
"Create a project" プロジェクト作成
"New Web Service" アプリ作成準備
"New PostgreSQL" データーベース準備

  1. "Create a project"
  • "Dashboard"の"Projects"(Overview)で、"Create a project"をクリックする。
  • "Project name"を入力して"Create a project"ボタンをクリックする。

  1. "New Web Service"
  • "Dashboard"の"Projects"(Overview)で、作成したプロジェクト名をクリックする。
  • "Production"の右端にある"+"アイコンをクリックして、"Create new service"をクリック。
  • "New Web Service"をクリック。
  • "Source Code"の"Git Provider"でリポジトリを"Connect"する。
  • 続けて、必要な項目を入力していく。最低限設定が必要な項目は表の通り。
項目 内容
Name アプリ名の設定。A unique name for your web service.
Language "Docker"を選択。
Branch Githubで選択しているリポジトリの使用するブランチを設定。
Region 適当に選択。
Instance Type Render.comは"Free"が選択できる。(512MB, 0.1CPU)
Environment Variables 環境変数を必要に応じて設定する。
  • "Deploy Web Service"ボタンをクリック。
  • "Dashboard"の"Projects"(Overview)で、作成したプロジェクト名をクリックすると上の方のWEBサービス名とGitリポジトリが記載されている下の辺りに表示されているURLをクリックしてWEBアプリにアクセスできる。
  • "Dashboard"の"Projects"(Overview)で、"STATUS"が"Available"になるとデプロイ正常完了。

  1. "New PostgreSQL"
  • "Dashboard"の"Projects"(Overview)で、作成したプロジェクト名をクリックする。
  • "Production"の右端にある"+"アイコンをクリックして、"Create new service"をクリック。
  • "New PostgreSQL"をクリック。
  • 続けて、必要な項目を入力していく。最低限設定が必要な項目は表の通り。
項目 内容
Region 適当に選択。
PostgreSQL Version アプリに合わせてPostgreSQLのバージョンを選択。
"Plan Options" "Instance Type" Render.comは"Free"が選択できる。(256MB/RAM, 0.1CPU, 1GB/Storage)
  • "Create Database"ボタンをクリック。

  1. PostgreSQLの接続情報
  • "Dashboard"の"Projects"(Overview)で、作成したプロジェクト名をクリックする。
  • "Info"のページでPostgreSQLの接続情報を確認できる。

注意点

* デフォルトのポート番号は10000番になっている。

  • ポート番号は"Environment Variables"でPORTを環境変数として設定して変更できる。しかし、18012, 18013, 19099は予約済みのため使用できない。
  • "0.0.0.0"をバインドしないといけない?
    host-and-port-configuration

Dockerfile

Dockerfileにはデフォルトポート番号である10000番に合わせて、EXPOSE 10000を設定している。

# ベースイメージを指定
FROM maven:3.8.3-openjdk-17-slim AS build

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

# Maven Wrapperのセットアップ
COPY .mvn .mvn

# Mavenプロジェクトをビルド
COPY pom.xml .
RUN mvn -B dependency:go-offline

# アプリケーションのビルド
COPY src src
RUN mvn -B package -DskipTests

# JREベースイメージを設定
FROM openjdk:17-jdk-slim

# アプリケーションのJARファイルをコピー
COPY --from=build /app/target/*.jar /app/app.jar

#デフォルトポート番号である10000番に合わせた
EXPOSE 10000

# アプリケーションの実行
CMD ["java", "-jar", "/app/app.jar"]

application.properties (SpringBoot)

  • DBへの接続情報は環境変数で指定。環境変数は"Environment Variables"で設定している。
  • デフォルトポート番号である10000番に合わせて、server.port=${SER_PORT}を設定している。${SER_PORT}は"Environment Variables"でSER_PORTを定義して10000の値を設定している。
spring.application.name=(アプリ名)
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
spring.datasource.driverClassName=org.postgresql.Driver
spring.sql.init.encoding=utf-8
spring.sql.init.mode=always
spring.jpa.open-in-view=false
spring.profiles.active = ${ENV:development}
server.port=${SER_PORT}
spring.datasource.schema=classpath:schema.sql
spring.datasource.data=classpath:data.sql
spring.datasource.initialization-mode=always

Discussion