> For AI agents: the complete documentation index is available at /resource/ucidm/docs/on-premise/1.9.0/llms.txt, the full documentation bundle is available at /resource/ucidm/docs/on-premise/1.9.0/llms-full.txt.

# Compose サービスの実行 \{#run-compose}

UCIDM は [Docker Compose](https://docs.docker.com/compose/) を使い、複数のアプリケーションやミドルウェアのコンテナを起動して、それぞれのサービスが協調してシステムを構成しています。

これまで `compose.yml` と `.env` の設定を行ってきました。実際にコンテナイメージを取得してサービスを起動してみましょう。

## (初回起動時のみ) MongoDB と RabbitMQ の起動および初期設定

MongoDB と RabbitMQ の起動および初回セットアップに少し時間がかかるので次のように起動させます。初めてセットアップするときに実行すれば、2回目以降は行う必要はありません。

```bash
$ docker compose up -d mongo rabbitmq
```

起動して 1 〜 2 分 `/var/log/osstech/ucidm/ucidm-mongo.log` の MongoDB のコンテナログを監視して出力が停止したのを確認します。RabbitMQ の初回起動処理は通常 MongoDB よりも前に完了します。

## Docker Compose の起動と終了

サービスを起動するときは up サブコマンドを実行します。

```bash
$ docker compose up -d
```

それぞれのサービスが正常に起動しているかどうかは ps サブコマンドで確認します。

```bash
$ docker compose ps
```

サービスを停止するときは stop サブコマンドを実行します。

```bash
$ docker compose stop
```

## コンテナのログ確認

[ログファイルは rsyslog で管理](/resource/ucidm/docs/on-premise/1.9.0/operation/log.md) しているため、docker logs (docker compose logs) コマンドで確認できません。

ログディレクトリは /var/log/osstech/ucidm になります。その配下のログファイルを参照してください。正常にサービスが起動しないときはログを確認してください。

```
$ ls -p /var/log/osstech/ucidm
old/  ucidm-admin-ui.log  ucidm-agent-ldap.log  ucidm-api.log
ucidm-consumer-local-001.log  ucidm-mongo.log  ucidm-passsync.log
ucidm-rabbitmq.log  ucidm-ucidm-ui.log
```

## コンテナサービスとの疎通確認

次のように疎通確認をします。

```bash
$ curl http://localhost:18080/status/version
{"ucidmVersion":"1.9.0","serverVersion":"814902d","idFederationClientVersion":"91a6c9e","mongoDBVersion":"8.2.4","rabbitMQVersion":"4.0.9"}
```

```bash
$ curl --head http://localhost:3030/sys/
HTTP/1.1 200 OK
```

```bash
$ curl --head http://localhost:5030/ui/
HTTP/1.1 200 OK
```

## 初期設定をやり直したいとき

Docker Compose で起動するサービスのいくつかは初回起動時に初期設定を行います。これらの設定は初回に実行されたときしか適用されません。

パスワードなどを誤ってしまったり、再設定したいときに **運用開始前** であればデータを削除することで初期設定をやり直すことができます。 **運用開始後は ID 連携のデータが格納されているので絶対に削除しないでください。**

たとえば MongoDB の初期設定をやり直すときは `mongodb` ディレクトリを削除して作成し直します。

```bash
$ docker compose down
$ rootlesskit rm -rf mongodb/*
```

compose.yml で volumes に設定されているデータを削除すると、再度 `.env` から初期設定を行います。

```bash
$ docker compose up -V mongo
Ctrl+C を入力して停止

$ docker compose up -d
```
