メインコンテンツまでスキップ

Dockerイメージビルド

GitHubリリースの成果物を利用してDockerイメージをビルドします。

リポジトリのDockerfileは使用しない

リポジトリ直下の Dockerfile はローカル開発用(マルチステージビルド+ソースからのビルド)です。 商用デプロイでは、リリースJARを使用して本ページの手順でDockerイメージをビルドしてください。


📦 リリース成果物の取得

ダウンロード

GitHubリリースページから最新版をダウンロード:

リリースURL: https://github.com/hirokazu-kobayashi-koba-hiro/idp-server/releases

# バージョン指定(リリースページで最新バージョンを確認してください)
VERSION=<LATEST_VERSION>

# JARダウンロード
wget https://github.com/hirokazu-kobayashi-koba-hiro/idp-server/releases/download/v${VERSION}/idp-server-${VERSION}.jar

# チェックサムダウンロード
wget https://github.com/hirokazu-kobayashi-koba-hiro/idp-server/releases/download/v${VERSION}/checksums.txt

# チェックサム検証
sha256sum -c checksums.txt --ignore-missing

期待結果:

idp-server-<VERSION>.jar: OK

🔨 Dockerイメージビルド

Dockerfile作成

リリースJARを使用する商用デプロイ用のDockerfile:

FROM eclipse-temurin:21-jre-alpine

WORKDIR /app

# リリース成果物をコピー
ARG JAR_FILE=idp-server-*.jar
COPY ${JAR_FILE} /app/idp-server.jar

# エントリーポイントスクリプトをコピー
COPY entrypoint.sh /app/entrypoint.sh

# セキュリティ: 非rootユーザーで実行
RUN chmod +x /app/entrypoint.sh && \
addgroup -S idpserver && \
adduser -S idpserver -G idpserver && \
chown -R idpserver:idpserver /app

USER idpserver

ENTRYPOINT ["/app/entrypoint.sh"]

entrypoint.sh 作成

#!/bin/sh

echo "Starting idp-server..."

# Clean up tmp directory before starting
rm -rf /tmp/tomcat.* 2>/dev/null || true

exec java $JAVA_OPTS -jar /app/idp-server.jar

Note: JAVA_OPTS 環境変数でJVMオプション(ヒープサイズ、GC設定等)を外部から指定できます。

イメージビルド

# entrypoint.sh に実行権限を付与
chmod +x entrypoint.sh

# ビルド実行
docker build -t idp-server:${VERSION} .
docker tag idp-server:${VERSION} idp-server:latest

イメージ確認

# イメージ一覧
docker images | grep idp-server

# 期待結果:
# idp-server <VERSION> <IMAGE_ID> X seconds ago XXX MB
# idp-server latest <IMAGE_ID> X seconds ago XXX MB

Note: 実際の起動・動作確認は 初期設定 を参照してください。


📤 コンテナレジストリへプッシュ

基本フロー

# 1. レジストリ認証
docker login <REGISTRY_URL>

# 2. イメージタグ付け
docker tag idp-server:${VERSION} <REGISTRY_URL>/idp-server:${VERSION}
docker tag idp-server:${VERSION} <REGISTRY_URL>/idp-server:latest

# 3. プッシュ
docker push <REGISTRY_URL>/idp-server:${VERSION}
docker push <REGISTRY_URL>/idp-server:latest

対応レジストリ: Amazon ECR, Google Container Registry, Azure Container Registry, Docker Hub等

Note: 各レジストリの認証方法・URL形式は、レジストリのドキュメントを参照してください。


🚨 トラブルシューティング

イメージビルド失敗

エラー: COPY failed: file not found

原因: JARファイルが存在しない

対処:

# ファイル存在確認
ls -la idp-server-*.jar

# 再ダウンロード
wget https://github.com/hirokazu-kobayashi-koba-hiro/idp-server/releases/download/v${VERSION}/idp-server-${VERSION}.jar

📋 ビルドチェックリスト

準備

  • GitHubリリースから最新JARダウンロード
  • チェックサム検証成功
  • Docker環境確認(docker version

ビルド

  • Dockerfile作成
  • entrypoint.sh 作成
  • イメージビルド成功(docker build
  • イメージ確認(docker images

レジストリ(任意)

  • レジストリ認証成功
  • バージョンタグでプッシュ
  • latest タグでプッシュ
  • レジストリでイメージ確認

🔗 関連ドキュメント