Compose サービスの準備
UCIDM は Docker Compose を使い、複数のアプリケーションやミドルウェアのコンテナを起動して、それぞれのサービスが協調してシステムを構成しています。
これらはすべて compose.yml
に設定します。また compose.yml
はデフォルトの動作として環境変数を同じディレクトリ内の .env
から読み込みます。
.env
ファイルはパスワードなどの機密情報を含むため、ファイルを保管するマシンへのアクセス権限に注意してください。ここでは ucidm ユーザーがアクセス権限をもつと仮定して設定作業を行います。
コンテナレジストリへアクセス設定
OSSTech 社のコンテナレジストリ にアクセスするには Docker Hub へ ログイン する必要があります。作業するユーザーの初回設定時のみ、次のようにしてログインしてください。実際に設定するパスワードは弊社のサポート担当者にご確認ください。
$ docker login --username osstech
Password: # パスワードを入力
ログインに成功すると、ホームディレクトリの .docker
ディレクトリ配下に config.json
というファイルが作成されて認証情報が保存されます。すでに config.json
が存在するのであれば今回の設定が追加されます。
$ cat $HOME/.docker/config.json
設定後、次のように実行してください。認証情報が正しければコンテナイメージを取得してコンテナを実行できます。
$ docker run docker.io/osstech/test-myrepo
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
Docker Compose の設定ファイル
ucidm ユーザーのホームディレクトリである /var/opt/osstech/lib/ucidm
に compose.yml
を配置します。
$ cd /var/opt/osstech/lib/ucidm
Docker Compose の設定のサンプルファイルを /var/opt/osstech/lib/ucidm
ディレクトリにコピーします。compose.yml
で扱う変数はデフォルトで .env
ファイルで解決されます。この .env
ファイルを直接使うデメリットとして次があります。
-a
オプションなしの ls コマンドで表示されないためにファイルを探しにくい- シェルのワイルドカード展開で対象から除外されるために grep コマンドなどでフィルターされない
.env
ファイル以外のファイル名で使う場合、docker コマンドへのオプション指定や環境変数設定が必要になります。これらのデメリットを解消した上で追加設定を不要にするため、ucidm.env
を参照するシンボリックリンクとして .env
を作成します。
$ cp /opt/osstech/share/ucidm/compose.yml .
$ cp /opt/osstech/share/ucidm/ucidm.env.example ucidm.env
$ ln -s "$(pwd)/ucidm.env" "$(pwd)/.env"
Docker Compose 上でコンテナとして稼働するアプリケーションやミドルウェアの設定のサンプルファイルも一緒にコピーします。
$ cp -a /opt/osstech/share/ucidm/{mongodb,rabbitmq,agent-data,server-data,ucidm-ui} .
$ ls -p # 次のファイルやディレクトリがあることを確認
agent-data/ compose.yml mongodb/ rabbitmq/ server-data/ ucidm-ui/ ucidm.env
Docker Compose で各種コンテナを起動すると、サービスのデータを永続化するためのディレクトリがさらにいくつか作られます。コンテナのサービスごとに永続化データ、設定情報やスクリプト等のファイルを配置します。
これらのアプリケーションやミドルウェアの設定の詳細は次のページでみていきます。UCIDM で利用するサービスは次の通りです。
コンテナイメージの取得
compose.yml を配置したらコンテナイメージを取得します。すでにコンテナイメージを取得済みであっても、より新しいイメージがあれば最新のイメージを取得します。
$ docker compose pull