type
status
date
slug
summary
tags
category
icon
password
 

実験マニュアル: WebアプリケーションとMySQLコンテナのデプロイ

目的

この実験では、Node.jsアプリケーションとMySQLデータベースをそれぞれ独立したコンテナとして実行し、それらをネットワークで接続する方法を学びます。

必要なリソース

  • ファイルパス: /home/student/DO285/labs/networkingcontainers
  • 使用する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

実験前の準備

  1. 環境のセットアップ: 次のコマンドを実行して、必要なファイルやコードを準備します。
    1. 既存のDockerイメージの確認と削除: 現在の環境にイメージが存在しないか確認し、存在する場合は削除します。

      実験手順

      1. MySQLイメージのビルド

      1. Dockerfileの確認: 次のパスにあるDockerfileをエディタで開き、内容を確認します。
        1. MySQLイメージのビルド: ビルドスクリプトを使用して、カスタムMySQLイメージを作成します。
          1. ビルド結果の確認: 以下のコマンドで、イメージが正しくビルドされたことを確認します。

            2. Node.jsの親イメージのビルド

            1. Dockerfileの確認: 次のパスにあるDockerfileを開き、記述内容を確認します。
              1. Node.js親イメージのビルド: スクリプトを使用してビルドします。
                1. ビルド結果の確認: イメージがビルドされたか以下で確認します。

                  3. Node.jsの子イメージ(To Doアプリ)のビルド

                  1. Dockerfileの確認: 次のパスにあるDockerfileを開き、記述内容を確認します。
                    1. 子イメージのビルド: スクリプトを実行してビルドします。
                      1. ビルド結果の確認:

                        4. 環境変数の確認

                        1. 設定ファイルの確認: データベース設定が記述された以下のファイルを確認します。
                          1. 使用される環境変数:
                              • MYSQL_DATABASE: データベース名
                              • MYSQL_USER: データベースユーザー名
                              • MYSQL_PASSWORD: データベースユーザーパスワード

                          5. Dockerネットワークの作成

                          1. ネットワークの作成: 次のコマンドでカスタムネットワークdo285-bridgeを作成します。
                            1. ネットワークの確認:

                              6. コンテナの実行

                              1. MySQLコンテナの起動:run.shスクリプトを編集し、以下のコマンドを挿入します。
                                1. To Doアプリケーションコンテナの起動: 同じrun.shスクリプトに以下のコマンドを追加します。
                                  1. スクリプトに待機コマンドを追加:docker runコマンドの後に以下を追加してください。

                                    結果確認

                                    ブラウザで以下のURLを開き、To Doアプリが正しく動作することを確認します。

                                    補足

                                    エラーが発生した場合は、以下のコマンドでログを確認してください。
                                    以上で実験は完了です。
                                     
                                     

                                    実験マニュアル: マルチコンテナアプリケーションのデプロイ

                                    この実験では、Dockerデーモンを使用して、ワークステーションホスト上でコンテナ化されたデータベースアプリケーションをデプロイします。

                                    リソース

                                    • 必要なファイル: /home/student/DO285/labs/deploy-instructor

                                    目標

                                    この実験を通じて、以下の内容を習得できます:
                                    • 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. クリーンアップ

                                    実験を終了した後、クリーンアップを実行して環境を整えます:

                                    実験の終了

                                    これで実験は終了です。
                                     
                                    21- 第6章:マルチコンテナアプリケーションの展開-1:考慮事項の説明23- 第7章:OpenShiftインストール-1:Ansibleの用意の説明
                                    Loading...
                                    minami
                                    minami
                                    一个普通的干饭人🍚
                                    Announcement

                                    🎉 ブログへようこそ 🎉

                                    notion image
                                    名前:みなみ独立事務所
                                    性別:男
                                    国籍:China
                                    完全独学だけで基本情報をはじめ31個の資格を仕事をしながら合格。 現在はIT会社の技術担当や、ブログの執筆や学習支援などを手掛けています。 独学で合格できる学習法、勉強法、試験対策を配信します!

                                    📚 主な内容

                                    💻 IT・システム開発
                                    🏠 不動産 × 宅建士
                                    🎓 MBA 学習記録

                                    🔍 コンテンツの探し方

                                    現在、サイトのデザインはシンプルなため、情報がやや探しにくいかもしれません。
                                    気になるテーマを探す際は、タグ検索の利用をおすすめします。