0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JFrog ArtifactoryのDerbyデータベースをPostgreSQLへ移行する

0
Posted at

はじめに

Dockerコンテナで動作しているJFrog Artifactoryのデータベースを、組み込みDerbyからPostgreSQLへ移行します。

Artifactoryのバージョンは、移行前後ともに7.71.23です。

移行前:Artifactory 7.71.23 + Derby
移行後:Artifactory 7.71.23 + PostgreSQL 15

JFrogでは、PostgreSQLへの移行方法としてSystem Export/Importを案内しています。異なるArtifactoryバージョン間でのImportは推奨されていないため、バージョンは変更しません。

前提環境

項目 設定
Artifactory 7.71.23
移行元DB Derby
移行先DB PostgreSQL 15
移行元コンテナ artifactory-derby
移行先コンテナ artifactory-postgresql
PostgreSQLコンテナ artifactory-db

System Exportの実行

ArtifactoryのWeb UIから以下を開きます。

Administration
  > Artifactory
  > Import & Export
  > System

下図のようにExportするパスとオプションを設定します。
設定する内容は環境に合わせてください。パスはDockerコンテナ内のパスとなります。
image.png

成功すると下図のように表示されます。
image.png

移行元の停止

docker stop artifactory-derby

移行が完了するまで、移行元コンテナは削除しません。

Dockerネットワークの作成

docker network create artifactory-network

PostgreSQLコンテナの起動

PostgreSQLデータ用のVolumeを作成します。

docker volume create artifactory-pgdata

PostgreSQLコンテナを起動します。

docker run -d \
  --name artifactory-db \
  --network artifactory-network \
  -e POSTGRES_DB=artifactory \
  -e POSTGRES_USER=artifactory \
  -e POSTGRES_PASSWORD='<パスワード>' \
  -v artifactory-pgdata:/var/lib/postgresql/data \
  postgres:15

起動状態を確認します。

docker exec artifactory-db \
  pg_isready -U artifactory -d artifactory

移行先ディレクトリの作成

sudo mkdir -p /opt/jfrog/artifactory-postgresql/var/etc/security
sudo chown -R 1030:1030 /opt/jfrog/artifactory-postgresql/var

master.keyのコピー

移行元のmaster.keyを移行先へコピーします。

sudo cp \
  /opt/jfrog/artifactory/var/etc/security/master.key \
  /opt/jfrog/artifactory-postgresql/var/etc/security/master.key

sudo chown 1030:1030 \
  /opt/jfrog/artifactory-postgresql/var/etc/security/master.key

sudo chmod 600 \
  /opt/jfrog/artifactory-postgresql/var/etc/security/master.key

master.keyは暗号化されたデータを復号するため、System Importで必要です。

system.yamlの作成

sudo vi /opt/jfrog/artifactory-postgresql/var/etc/system.yaml

以下を設定します。

shared:
  database:
    type: postgresql
    driver: org.postgresql.Driver
    url: jdbc:postgresql://artifactory-db:5432/artifactory
    username: artifactory
    password: "<パスワード>"
sudo chown 1030:1030 \
  /opt/jfrog/artifactory-postgresql/var/etc/system.yaml

sudo chmod 600 \
  /opt/jfrog/artifactory-postgresql/var/etc/system.yaml

移行先Artifactoryの起動

移行元とポートが重複しないように、確認用ポートで起動します。

docker run -d \
  --name artifactory-postgresql \
  --network artifactory-network \
  -p 18081:8081 \
  -p 18082:8082 \
  -v /opt/jfrog/artifactory-postgresql/var:/var/opt/jfrog/artifactory \
  -v /opt/jfrog/artifactory/var/backup/system-export:/import:ro \
  releases-docker.jfrog.io/jfrog/artifactory-pro:7.71.23

ログを確認します。

docker logs -f artifactory-postgresql

System Importの実行

以下へアクセスします。

http://<サーバー名>:18082/ui/

Web UIから以下を開きます。

Administration
  > Artifactory
  > Import & Export
  > System

下図のようにコンテナ内でExportしたファイルを配置したパスとオプションを指定します。
image.png

下図のように出力される場合は、zipファイルを展開してフォルダを指定するようです。
ARTIFACTORY: How to overcome the “Invalid Import Directory” error
image.png

SystemとAll repositoriesをImportした時の画面イメージは下図のようになります。
image.png

image.png

動作確認

以下を確認します。

  • リポジトリ
  • アーティファクト
  • ユーザーとグループ
  • その他の設定など

Liveness APIを確認します。

curl -fsS \
  http://localhost:18082/artifactory/api/v1/system/liveness

PostgreSQLのテーブルを確認します。

docker exec artifactory-db \
  psql -U artifactory -d artifactory -c '\dt'

問題がなければ、移行先コンテナを本番ポートで再作成します。

参考

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?