type
Post
status
Published
date
Nov 16, 2024
slug
summary
tags
DO285
EX188
Redhat
学習ノート
category
民間資格勉強
icon
password
実験マニュアル: WebアプリケーションとMySQLコンテナのデプロイ
目的
この実験では、Node.jsアプリケーションとMySQLデータベースをそれぞれ独立したコンテナとして実行し、それらをネットワークで接続する方法を学びます。
必要なリソース
- ファイルパス:
/home/student/DO285/labs/networkingcontainers
- アプリケーションURL: http://127.0.0.1:30080/todo/
- 使用するDockerイメージ:
- RHSCL MySQL 5.7イメージ:
rhscl/mysql-57-rhel7 - カスタムMySQL 5.7イメージ:
do285/mysql-57-rhel7 - RHEL 7.5イメージ:
rhel7.5 - カスタムNode.js 4.0イメージ:
do285/nodejs
実験前の準備
- 環境のセットアップ: 次のコマンドを実行して、必要なファイルやコードを準備します。
- 既存のDockerイメージの確認と削除: 現在の環境にイメージが存在しないか確認し、存在する場合は削除します。
実験手順
1. MySQLイメージのビルド
- Dockerfileの確認: 次のパスにあるDockerfileをエディタで開き、内容を確認します。
- MySQLイメージのビルド: ビルドスクリプトを使用して、カスタムMySQLイメージを作成します。
- ビルド結果の確認: 以下のコマンドで、イメージが正しくビルドされたことを確認します。
2. Node.jsの親イメージのビルド
- Dockerfileの確認: 次のパスにあるDockerfileを開き、記述内容を確認します。
- Node.js親イメージのビルド: スクリプトを使用してビルドします。
- ビルド結果の確認: イメージがビルドされたか以下で確認します。
3. Node.jsの子イメージ(To Doアプリ)のビルド
- Dockerfileの確認: 次のパスにあるDockerfileを開き、記述内容を確認します。
- 子イメージのビルド: スクリプトを実行してビルドします。
- ビルド結果の確認:
4. 環境変数の確認
- 設定ファイルの確認: データベース設定が記述された以下のファイルを確認します。
- 使用される環境変数:
- MYSQL_DATABASE: データベース名
- MYSQL_USER: データベースユーザー名
- MYSQL_PASSWORD: データベースユーザーパスワード
5. Dockerネットワークの作成
- ネットワークの作成:
次のコマンドでカスタムネットワーク
do285-bridgeを作成します。
- ネットワークの確認:
6. コンテナの実行
- MySQLコンテナの起動:
run.shスクリプトを編集し、以下のコマンドを挿入します。
- To Doアプリケーションコンテナの起動:
同じ
run.shスクリプトに以下のコマンドを追加します。
- スクリプトに待機コマンドを追加:
各
docker runコマンドの後に以下を追加してください。
結果確認
ブラウザで以下のURLを開き、To Doアプリが正しく動作することを確認します。
補足
エラーが発生した場合は、以下のコマンドでログを確認してください。
以上で実験は完了です。
実験マニュアル: マルチコンテナアプリケーションのデプロイ
この実験では、Dockerデーモンを使用して、ワークステーションホスト上でコンテナ化されたデータベースアプリケーションをデプロイします。
リソース
- 必要なファイル:
/home/student/DO285/labs/deploy-instructor
- アプリケーションURL: http://localhost:8080/services/instructors
目標
この実験を通じて、以下の内容を習得できます:
- Dockerコンテナネットワークを作成・構成する方法
- 複数のコンテナを作成し、ネットワーク接続を共有する方法
- コンテナ間で設定を共有・調整する方法
実施前準備
実験に必要なファイルをダウンロードするために、ワークステーションで以下のコマンドを実行します:
手順
1. データベースコンテナイメージのビルド
インストラクターアプリケーション用のデータベースコンテナイメージをビルドします。イメージには
instructor/mysql:latestというタグを付けます。Dockerfileは/home/student/DO285/labs/deploy-instructor/mysqlディレクトリにあります。1.1. ワークステーションで以下のコマンドを実行して、指定されたディレクトリに移動します:
1.2.
docker buildコマンドを使用して、instructor/mysql:latestとしてタグ付けされたデータベースコンテナイメージをビルドします:1.3.
Dockerfile内の環境変数を確認して、コンテナのランタイム動作にどのように影響するかを把握します:重要な環境変数:
$MYSQL_USER- データベースユーザー名
$MYSQL_PASSWORD- ユーザーのパスワード
$MYSQL_DATABASE- 作成するデータベース名
$MYSQL_ROOT_PASSWORD(オプション) - rootアカウントのパスワード
2. フロントエンドPHPコンテナイメージのビルド
インストラクターアプリケーション用のPHPフロントエンドコンテナイメージをビルドします。イメージには
instructor/php:latestというタグを付けます。Dockerfileは/home/student/DO285/labs/deploy-instructor/instructorディレクトリにあります。2.1. ワークステーションで以下のコマンドを実行して、指定されたディレクトリに移動します:
2.2.
docker buildコマンドを使用して、instructor/php:latestとしてタグ付けされたフロントエンドコンテナイメージをビルドします:2.3.
src/services/api.phpファイルを確認して、データベース接続を制御する環境変数を特定します。dbConnect()関数内でデータベース接続が設定されています:dbConnect()関数で使用される環境変数:MYSQL_HOST
MYSQL_USER
MYSQL_PASSWORD
MYSQL_DATABASE
3. Dockerネットワークの作成
2つのコンテナが共有できるように、
appsという名前のDockerネットワークを作成します。以下のコマンドを実行してネットワークを作成します:
4. データベースコンテナの作成
instructor/mysql:latestイメージを使用して、以下のプロパティを持つデータベースコンテナを作成します:- コンテナはデタッチモードで実行される
- コンテナは
appsネットワークに接続される
- コンテナ名は
db
- 新しいデータベース
instructorが作成される
dbuser1というデータベースユーザーが作成され、パスワードはmypa55
以下のコマンドを使用してコンテナを作成します:
5. フロントエンドWebアプリコンテナの作成
instructor/php:latestイメージを使用して、以下のプロパティを持つWebアプリコンテナを作成します:- コンテナはデタッチモードで実行される
- コンテナは
appsネットワークに接続される
- データベース接続設定用の環境変数が設定される
- ローカルポート8080がコンテナのポート8080に転送される
以下のコマンドを使用してコンテナを作成します:
6. アプリケーションの動作確認
http://localhost:8080/services/instructors エンドポイントで、アプリケーションが正しく動作しているかを確認します。JSONデータが返される場合、webappコンテナがdbコンテナからデータベースレコードを取得できていることが確認できます。curlコマンドで確認します:7. グレーディングスクリプトの実行
すべてのタスクが完了したか確認するために、グレーディングスクリプトを実行します:
8. クリーンアップ
実験を終了した後、クリーンアップを実行して環境を整えます:
実験の終了
これで実験は終了です。
- Author:minami
- URL:https://www.minami.ac.cn/private-license/149d7ae8-88e2-80bd-b0bd-efeeb2ec40b4
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts





