OKE上でのIDCSカスタム・ログイン・ウィジェットの実行:パート2 - Dockerize (2021/10/01)

OKE上でのIDCSカスタム・ログイン・ウィジェットの実行:パート2 - Dockerize (2021/10/01)

https://www.ateam-oracle.com/post/running-idcs-custom-login-widget-on-oke-part-2-dockerize

投稿者:Manasi Vaishampayan


はじめに


この記事では、IDCSカスタムログインウィジェットをdockerizeするための正確な手順を説明したいと思います。

パート1をご参照ください。IDCSカスタム・ログイン・ウィジェットをOKE上で動かす:概要」を参照して、全体の流れを理解してください。


必要となるもの : 


1) gitクライアントとGitHubアカウント

2) 開発マシンへのDockerのインストール

3) OCIテナンシーと、OCIRリポジトリを作成する権限を持つユーザーアカウント 


ステップ1: - GitHubリポジトリをフォーク


チュートリアルでは、GitHubリポジトリからCustom Sign-In APIウェブアプリケーションをダウンロードして解凍し、コンピュータの一時フォルダに置くことを提案しています。代わりに、リポジトリをフォークすることもできます。フォークすると、リポジトリのコピーが作成され、元のプロジェクトに影響を与えることなく自由に変更を試すことができます。 リポジトリをフォークして独自の変更を加えたり、プルリクエストを作成して修正点を貢献/提出したりすることをお勧めします。



次に、フォークしたリポジトリを開発マシンにクローンします。


git clone https://github.com:USERNAME/YOUR-FORKED-REPO


ステップ2:Dockerfileの作成


同じディレクトリに、Dockerfileという名前の新しいファイルを作成します。


IDCSカスタム・ログイン・ウィジェットは、Node JSアプリケーションです。そのため、dockerfileは他のNodeJSアプリケーションと非常によく似ています。


以下は私のサンプルDockerfileです。

FROM node:alpine

# Create app directory WORKDIR /usr/src/app # Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .

EXPOSE 3000
# "npm start" is how this would normally be started
CMD [ "npm", "start" ] 


ステップ3:Dockerイメージの構築


dockerfileからdockerイメージを構築します。イメージの名前は自由に決めてください。


docker build -t $IMAGE_NAME $PATH_TO_DOCKERFILE


dockerイメージを確認するために、イメージをリストアップします。


docker images


ステップ4:OCIRにイメージをプッシュ


OCIRに任意のdockerイメージをプッシュする方法については、このチュートリアルを参照してください。より簡単にするために、いくつかのスクリーンショットを追加しています。


A. OCIのユーザプロファイルに認証トークンを設定するには


OCIコンソールにログインして、ユーザープロファイルに移動してください -> Auth Tokens and generate a new auth token




あなたのAuth tokenを安全に保管してください。後でこのAuthトークンの値を見たり取得したりすることはできません


B. あなたの開発マシンから、以下を実行してOCIRにログイン


docker login <region-key>.ocir.io


例えば、私のOCIRリージョンはAshburnなので、次のように使います。


docker login iad.ocir.io


Usernameを聞かれたら、auth tokenを持つユーザーの名前を<tenancy-namespace>/<username>の形式で入力します。


または、IDCSユーザーの場合は、<tenancy-namespace>/oracleidentitycloudservice/<username>の形式で入力します。


パスワードの入力を求められたら、ユーザーのOracle Cloud Infrastructure auth tokenを入力します。


C. 前のステップで作成したdockerイメージをタグ付けしてOCIRにプッシュ


手順2で作成したdockerイメージをタグ付けします。OCIコンテナレジストリに新しいリポジトリを作成するか、既存のリポジトリを使用することができます。タグのフォーマットは - <region-key>.ocir.io/<tenancy-namespace>/<repo-name>:<version> です。


docker tag idcslogin:latest iad.ocir.io/mytenancy/myrepo/idcslogin:latest docker push iad.ocir.io/mytenancy/myrepo/idcslogin:latest


Kubernetesのマニフェストファイルは、ポッドをデプロイする際にこのイメージを使用します。


カスタム・ログイン・アプリでは、IDCS_URL、IDCS_CLIENT_ID、IDCS_SECRETなどの必須の環境変数を設定する必要があります。また、IDCS_SELFREGPROFILESで自己登録プロファイルをログイン・ウィジェットに渡したり、DEBUG_LOGIN=trueでNodeJSのデバッグ・ログを有効にしたりするなど、その他のオプションの環境変数を設定することもできます。本番環境では、NODE_ENV=production変数も設定する必要があります。


これらの値を保存するためにKubernetesのシークレットを使用し、マニフェストファイルでこれらを渡すことになります。 



まとめ


この投稿では、ログインウィジェットイメージをdockerizeしてOCIRにプッシュする方法を簡単に紹介しました。これにより、次のステップであるOKE上でのウィジェットのデプロイと実行に向けた準備が整いました。


コメント

このブログの人気の投稿

Oracle Database 19cサポート・タイムラインの重要な更新 (2024/11/20)

Oracle APEXのInteractive Gridで、Oracle Formsと比較して、重複行の検証を制御/通過させる方法 (2022/07/21)

Oracle APEX 24.1の一般提供の発表 (2024/06/17)