はじめに
JFrog Artifactory ProをDockerコンテナとして起動したので、その作業手順を記載します。
Artifactoryは、Maven、npm、Docker、PyPIなどのパッケージやビルド成果物を管理するためのリポジトリ管理製品です。
本記事では、動作確認を目的として、Artifactoryに組み込まれているDerbyデータベースを使用します。(現在、JFrogでは、本番環境でのDerbyの使用を推奨していません。本番環境では、外部PostgreSQLの使用が推奨されています。)
前提環境
[OS]
- Red Hat Enterprise Linux 9
- Docker Engineがインストール済み
[ソフトウェア]
- JFrog Artifactory Pro 7.71.23
- 組み込みDerbyデータベース
[その他]
- ホスト側の8081番および8082番ポートが使用可能
- (Artifactory Proのライセンスを用意済み)
Artifactory 7.xでは、Web UIへのアクセスに8082番ポートを使用します。8081番ポートはArtifactory APIなどで使用されます。
事前準備
Artifactoryの設定、ログ、リポジトリデータを保存するディレクトリを作成します。
sudo mkdir -p /opt/jfrog/artifactory/var
Artifactory公式Dockerイメージでは、通常UIDおよびGIDとして1030が使用されます。
作成したディレクトリの所有者を変更します。
sudo chown -R 1030:1030 /opt/jfrog/artifactory/var
ディレクトリを確認します。
ls -ld /opt/jfrog/artifactory/var
以下のようにUIDおよびGIDが1030となっていればOKです。
drwxr-xr-x. 2 1030 1030 6 Jul 13 10:00 /opt/jfrog/artifactory/var
JFrogの公式手順でも、Artifactory用ディレクトリの所有者としてUIDおよびGIDの1030が例示されています。
作業手順
Dockerイメージの取得
以下のコマンドでArtifactory ProのDockerイメージを取得します。
docker pull releases-docker.jfrog.io/jfrog/artifactory-pro:7.71.23
取得したイメージを確認します。
docker image ls releases-docker.jfrog.io/jfrog/artifactory-pro
以下のように表示されます。
REPOSITORY TAG
releases-docker.jfrog.io/jfrog/artifactory-pro 7.71.23
Artifactory 7.xの公式Dockerイメージは、releases-docker.jfrog.ioから配布されています。
Artifactoryコンテナの起動
以下のコマンドでArtifactoryコンテナを起動します。
docker run -d \
--name artifactory \
--restart unless-stopped \
-p 8081:8081 \
-p 8082:8082 \
-v /opt/jfrog/artifactory/var:/var/opt/jfrog/artifactory \
releases-docker.jfrog.io/jfrog/artifactory-pro:7.71.23
設定内容は以下のとおりです。
| 設定 | 内容 |
|---|---|
--name artifactory |
コンテナ名 |
--restart unless-stopped |
Docker再起動時にコンテナを自動起動 |
-p 8081:8081 |
Artifactory API用ポート |
-p 8082:8082 |
RouterおよびWeb UI用ポート |
-v |
Artifactoryデータの永続化 |
起動したコンテナを確認します。
docker ps --filter name=artifactory
起動ログの確認
Artifactoryの起動ログを確認します。
docker logs -f artifactory
初回起動では、必要なディレクトリやデータベースが作成されるため、起動完了まで時間がかかる場合があります。
ログに重大なエラーが出力されていないことを確認します。
別のターミナルから、以下のコマンドでコンテナの状態を確認します。
docker ps --filter name=artifactory
ログの確認を終了する場合は、Ctrl+Cを入力します。
Ctrl+Cを入力しても、Artifactoryコンテナは停止しません。
Web UIへのアクセス
ブラウザから以下のURLへアクセスします。
http://<Artifactoryサーバー>:8082/ui/
ログイン画面が表示されます。
初期ユーザーおよび初期パスワードは以下のとおりです。
ユーザー名:admin
パスワード:password
初回ログイン後、ウィザードに従って管理者パスワードを変更します。
初期パスワードはセキュリティ上のリスクとなるため、必ず変更します。
(使う場合)ライセンスの登録
Artifactory Proを使用する場合は、ライセンスを登録します。
管理画面から以下の順で画面遷移します。
Administration
> Licensing
ライセンスキーを入力し、登録します。
ライセンスの登録が完了すると、Artifactory Proの機能を使用できるようになります。
動作確認
Liveness APIの確認
以下のコマンドでArtifactoryのLiveness APIへアクセスします。
curl -fsS \
http://localhost:8082/artifactory/api/v1/system/liveness
以下のように表示されればOKです。
OK
リポジトリの作成
管理画面から以下の順で画面遷移します。
Administration
> Repositories
> Repositories
> Local
「Create a Repository」をクリックします。
今回は動作確認のため、Genericリポジトリを作成します。
以下の値を入力します。
| 項目 | 設定値 |
|---|---|
| Package Type | Generic |
| Repository Key | test-generic-local |
必要な情報を入力し、「Create Local Repository」をクリックします。
作成が完了すると、Local Repositoriesの一覧にtest-generic-localが表示されます。
ファイルのアップロード
動作確認用のファイルを作成します。
echo "Artifactory test file" > test.txt
作成したファイルをアップロードします。
curl -u admin:<変更後のパスワード> \
-T test.txt \
http://localhost:8082/artifactory/test-generic-local/test.txt
以下のようなJSONが表示されればアップロードは成功です。
{
"repo": "test-generic-local",
"path": "/test.txt"
}
アップロードしたファイルをダウンロードします。
curl -u admin:<変更後のパスワード> \
-o downloaded-test.txt \
http://localhost:8082/artifactory/test-generic-local/test.txt
ファイルの内容を確認します。
cat downloaded-test.txt
以下のように表示されればOKです。
Artifactory test file
データ永続化の確認
Artifactoryコンテナを停止、削除します。
docker stop artifactory
docker rm artifactory
同じ永続化ディレクトリを指定して、再度コンテナを起動します。
docker run -d \
--name artifactory \
--restart unless-stopped \
-p 8081:8081 \
-p 8082:8082 \
-v /opt/jfrog/artifactory/var:/var/opt/jfrog/artifactory \
releases-docker.jfrog.io/jfrog/artifactory-pro:7.71.23
Web UIへアクセスし、以下が残っていることを確認します。
- 作成したユーザー設定
-
test-generic-localリポジトリ - アップロードした
test.txt
データが残っていれば、永続化設定は完了です。
補足
今回使用したDerbyデータベースは、簡易的な検証環境向けです。
JFrogでは、Derbyは機能、性能および耐障害性に制限があるため、本番環境での使用を推奨していません。本番環境では外部PostgreSQLの使用が推奨されています。
次の記事では、今回作成したDerby環境のデータをPostgreSQLへ移行します。