type
status
date
slug
summary
tags
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. クリーンアップ
実験を終了した後、クリーンアップを実行して環境を整えます:
実験の終了
これで実験は終了です。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/149d7ae8-88e2-80bd-b0bd-efeeb2ec40b4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章