カタログ1. PHPの展開プロセス:
カタログフォーム生成(1)充填は、配備、サービスおよびOC新しいアプリを実行することに一見等価オブジェクトのシリーズを構築し、
(2)は、PHPは、コンテナの実行を開始するS2Iビルドを構築します。
(3)GitHubのからコードをダウンロードします。
(4)はアセンブルが所望の位置に配置されるアプリケーションスクリプトのソースを実行します。
(5)のImageStream CMDとアイテム画像に新しいコンテナをコミットスクリプトを実行するように構成されました。
(6)DCが生成さミラーリング・アプリケーションの展開を引っ張ります。
2.アプリケーションのサイドノート:
(1)カスタマイズされた環境変数:コード指定したディレクトリ.s2i /環境
プライマル独自の環境変数:
HOSTNAME = 41c549462611 PHP_DEFAULT_INCLUDE_PATH = / OPT / RH / RH-php72 /ルートを/ usr / share /梨 APP_ROOT = / OPT / APP- ルート PHP_VER_SHORT = 72 TERM = xtermの App_Dataに =の/ opt / APP-ルート/ SRC DESCRIPTION =利用可能なPHP 7.2容器として基台であるため、様々なPHP 7.2アプリケーションおよびフレームワークを構築し、実行しています。PHPは、HTMLに埋め込まれたスクリプト言語です。PHPは、それが簡単にしようとするために、開発者が動的に生成されるWebページを記述する。PHPも申し出は内蔵でデータベース統合のためにいくつかの商用、非商用のデータベース管理システムは、そのデータベース対応のウェブページの書き込みと PHPは非常に簡単です。コーディングPHPの最も一般的な用途は、代替としておそらくのためのCGIスクリプト。 NODEJS_SCL = rh- nodejs10 HTTPD_VAR_PATH =は/ opt / RH / httpd24 /ルートの/ var NAME = PHP HTTPD_CONFIGURATION_PATH =は/ opt /アプリ-ルートの/ etc / conf.dの PATH =は/ opt /アプリ-ルート/ srcに/ binにします。/ opt /アプリルート/ binに:は/ usr / local / sbinに:は/ usr / local /ビン:は/ usr / sbinにします。/ usr / binに:/ sbinに:/ binにします。/ opt / RH / RH-php72 /ルートは/ usr / binに HTTPD_VAR_RUN =の/ var /実行/ httpdの STI_SCRIPTS_URL =画像:// は/ usr / libexecに/ s2i HTTPD_MAIN_CONF_PATH =は/ etc / httpdの/ confに / srcにPWD =は/ opt /アプリ-ルート STI_SCRIPTS_PATH =は/ usr / libexecに/ s2i SUMMARY =プラットフォームのために構築し、PHP 7.2で実行するアプリケーションを PLATFORM = EL7 HTTPD_DATA_PATH =の/ var / WWWの HOME =は/ opt /アプリ-ルート/ srcに HTTPD_DATA_ORIG_PATH =は/ opt / RH / httpd24 /ルートの/ var / WWW SHLVL = 1 PHP_SYSCONF_PATH =は/ etcは/ opt / RH / rh- php72 SCL_ENABLED = rh- php72 PHP_HTTPD_CONF_FILE = RH-php72- php.conf PHP_CONTAINER_SCRIPTS_PATH = / usr / share /コンテナのスクリプト/ PHP / HTTPD_MAIN_CONF_D_PATH=の/ etc /のhttpd / conf.d PHP_VERSION = 7.2 _ =は/ usr / binに/ ENV
(2)スクリプトを適応:ソースイメージをカバーするためにスクリプトを変更します
スクリプトを組み立てます:
#!/ binに/ bashのの セット - 電子 源$ {} PHP_CONTAINER_SCRIPTS_PATH /common.sh shopt - S dotglob エコー "--->インストールアプリケーションのソース..." MVを/ tmp / SRC / * ./ #修正ソースディレクトリのパーミッションを 修正-permissions ./ FIX-権限$ {HTTPD_CONFIGURATION_PATH} #変更NPMレジストリミラー提供されている場合 であれば[ "$ NPM_MIRROR" -N]。その後、 NPMコンフィグセット登録$ NPM_MIRRORの Fiの 場合は[-f composer.json]。その後、 エコー"発見'composer.json'、composer.pharを使用して依存関係を...インストール" RETRIES = 6 #作曲をインストールします。 TEMPFILE = $(mktempを) (; I <$ RETRIES; I ++)は、(i = 0)のため、行う 場合は[-z "$ COMPOSER_INSTALLER"]; その後、 = "https://getcomposer.org/installer" COMPOSER_INSTALLERをエクスポート Fiの "$((I + 1))/ $ RETRIES試み、ダウンロード$ COMPOSER_INSTALLER"エコー $ TEMPFILE $ COMPOSER_INSTALLER &&ブレーク-oカール スリープ10 行って いる場合に、[[私== $ RETRIES]] $。その後、 「ダウンロードはあきらめ、失敗しました。」エコー 出口1つ のfi PHP <$ TEMPFILE なら[ "$(LS -a / TMP /アーティファクト/ 2>を/ dev / null)"]。その後、 "ビルド成果物の復元"エコー MVを/ tmp /アーティファクト/ * $ HOME / Fiが [-n "$ COMPOSER_MIRROR"]の場合; その後、 ./composer.phar設定-g repositories.packagist作曲の$ COMPOSER_MIRRORの Fi回線 #は、アプリをインストールComposerが使用して依存関係 --no-ANSI --optimize-オートローダ$ COMPOSER_ARGS --no-相互作用をインストール./composer.phar [場合!-f composer.lock]。その後、 エコー-e「\ nConsiderは、あなたのソースリポジトリに『composer.lock』ファイルを追加します\ n」 Fi回線 Fiの #ポスト組み立てファイル process_extending_files ./php-post-assemble/ $ {PHP_CONTAINER_SCRIPTS_PATH} /ポスト組み立て/ #修正ソースディレクトリのパーミッション 修正-権限./ 修正-権限$ {} HTTPD_CONFIGURATION_PATH
:()アプリケーションサーバとApacheを起動するためのスクリプトを実行します
SH-4.2 $猫の実行 #!/ binに/ 、bashの ソース$ {} PHP_CONTAINER_SCRIPTS_PATH /common.sh export_vars = $(cgroup- 限度)。$ export_varsエクスポート 輸出のDocumentRoot = $ {をDocumentRootのを: - /} #デフォルトのphp.iniの設定値、すべて取ら #をPHPのデフォルトから。 輸出のerror_reporting = $ {のerror_reporting:-E_ALL&〜E_NOTICE} 輸出はdisplay_errors = $ {はdisplay_errors: - ON} 輸出DISPLAY_STARTUP_ERRORS = $ {DISPLAY_STARTUP_ERRORS: - OFF} 輸出TRACK_ERRORS = $ {TRACK_ERRORS: - OFF} 輸出HTML_ERRORS = $ {HTML_ERRORS: - ON} 輸出INCLUDE_PATH = $ {INCLUDE_PATH: - :は/ opt /アプリ-ルート/ SRC:$ {PHP_DEFAULT_INCLUDE_PATH}} 輸出PHP_MEMORY_LIMIT = $ {PHP_MEMORY_LIMIT: - 128M} 輸出SESSION_NAME = $ {SESSION_NAME: - PHPSESSID} 輸出SESSION_HANDLER = $ {SESSION_HANDLER : - ファイル} 輸出SESSION_PATH = $ {SESSION_PATH: - / tmpに/ セッション} 輸出SESSION_COOKIE_DOMAIN = $ {SESSION_COOKIE_DOMAIN: - } 輸出SESSION_COOKIE_HTTPONLY = $ {SESSION_COOKIE_HTTPONLY: - } 輸出SESSION_COOKIE_SECURE = $ {SESSION_COOKIE_SECURE:-0 } 輸出はshort_open_tag = $ { short_open_tagが: - OFF} #TODO動的コンテナのメモリ制限に基づいて計算されなければならない / 16 :エクスポートOPCACHE_MEMORY_CONSUMPTION = $ {-128 OPCACHE_MEMORY_CONSUMPTION } エクスポートOPCACHE_REVALIDATE_FREQ:= $ {OPCACHE_REVALIDATE_FREQ -2 } エクスポートPHPRC { - $ {PHP_SYSCONF_PATH} /php.ini PHPRC} = $ 輸出PHP_INI_SCAN_DIR = $ {PHP_INI_SCAN_DIR: - $ {PHP_SYSCONF_PATH}} /php.d envsubst </opt/app-root/etc/php.ini.template> $ {} PHP_SYSCONF_PATH /php.ini envsubst <は/ opt /アプリルート/etc/php.d/10-opcache.ini.template> $ {PHP_SYSCONF_PATH} /php.d/10-opcache.ini エクスポートHTTPD_START_SERVERS = $ {HTTPD_START_SERVERS:-8 } エクスポートHTTPD_MAX_SPARE_SERVERS = $((HTTPD_START_SERVERS + 10 )) もし [-n "$ {NO_MEMORY_LIMIT: - }" -o -z "$ {MEMORY_LIMIT_IN_BYTES: - }" ]。その後、 # 輸出HTTPD_MAX_REQUEST_WORKERS = $ {HTTPD_MAX_REQUEST_WORKERS:-256 } 他に #簡単な計算のための MaxRequestWorkersは次のようになります。総メモリ/ サイズごとApacheプロセス。 #総メモリは、のcgroupから決定され、平均サイズのため #Apacheプロセスは、15メガバイトと推定されます。 max_clients_computed = $((MEMORY_LIMIT_IN_BYTES / 1024/1024年から1015年)) #MaxClientsのは5に設定されているにStartServers、より低くてはいけません。 #の場合コンテナは、私たちが4にMaxClientsのピン<64Mにメモリ制限が設定されています。 [[$はmax_clients_computed -le 4] && max_clients_computed = 4 輸出HTTPD_MAX_REQUEST_WORKERS = $ {HTTPD_MAX_REQUEST_WORKERS: - $ max_clients_computed} エコー " - >のcgroupメモリ制限を使用して、設定されているHTTPD_MAX_REQUEST_WORKERS = $ {HTTPD_MAX_REQUEST_WORKERS}" のfi #は、事前 - 起動ファイル process_extending_filesの$ {App_Dataに} / PHP-プレスタート/ $ {PHP_CONTAINER_SCRIPTS_PATH} /始動前/ EXECのhttpd -D FOREGROUND
プライマルミラー3.php:
CentOSの/ s2i塩基centos7 FROM #この画像では、Apache提供 + PHP環境のためのPHPを実行している #アプリケーションを。 EXPOSE 8080を EXPOSE 8443 #説明 #この画像はApacheの提供 2.4 + PHP 7.2環境をするためにPHPアプリケーションを実行します。 #露出ポート: # * 8080 -代替ポートのためのhttp ENV PHP_VERSION = 7.2 \ PHP_VER_SHORT = 72 \ NAME = PHP \ PATH = $ PATH:/ OPT / RH / RH-php72 /ルートは/ usr / binに ENV概要=「PHP $ PHP_VERSIONアプリケーションを構築し、実行するためのプラットフォーム」\ DESCRIPTION =」コンテナとして利用可能PHP $ PHP_VERSIONが\のための基本プラットフォームである 様々なPHP $ PHP_VERSIONアプリケーションやフレームワークを構築し、実行している。\ PHPは、HTMLに埋め込まれたスクリプト言語です。PHP試みは、開発者\のために簡単にそれを作るために 、動的に生成されたWebページを記述する。PHPも申し出内蔵のデータベース統合\ いくつかの商用、非商用のデータベース管理システムのため、\執筆ので PHPとデータベース対応のウェブページはかなり単純であるザPHPは\コーディングの最も一般的な用途は、 CGIスクリプトの代わりとして考えられます。「 LABELサマリー =」$ {} SUMMARY」 \ 説明 = "$ {DESCRIPTION}" \ io.k8s.description = "$ {DESCRIPTION}" \ io.k8s.display -name = "PHP $ {PHP_VERSION}とアパッチ2.4" \ io.openshift.expose -services =」 8080:HTTP」\ io.openshift.tags = "ビルダー、$ {NAME}、$ {NAME} $ {} PHP_VER_SHORT、RH - $ {NAME} $ {PHP_VER_SHORT}" \ io.openshift.s2i.scripts -url = "画像:/// USR / libexecに/ s2i" \ io.s2i.scripts -url = "画像:/// USR / libexecに/ s2i" \ 名 = "CentOSの/ $ {NAME} - $ {PHP_VER_SHORT} -centos7 " \ com.redhat.component= "RH - $ {NAME} $ {} PHP_VER_SHORT -container" \ バージョン = "$ {PHP_VERSION}" \ ヘルプ = "より多くの情報をご覧くださいhttps://github.com/sclorg/s2i-${NAME}-container " \ 使用 =" s2iビルドhttps://github.com/sclorg/s2i-php-container.git --context-DIR = $ {PHP_VERSION} /試験/試験アプリのCentOS / $ {NAME} - $ {PHP_VER_SHORT } -centos7サンプル・サーバー" \ メンテナ = "SoftwareCollections.org <[email protected]>" #インストールのApache HTTPDとPHP RUN yumをインストール -y CentOSのリリース-SCL && \ INSTALL_PKGS ="RH-php72 RH-php72-phpのRH-php72-PHP-mysqlnd RH-php72-のphp-pgsqlのRH-php72-のphp-bcmath \ RH-php72-PHP-GD RH-php72-PHP-国際空港RH-php72-PHP-LDAP RH-php72-のphp-mbstringのRH-php72-PHP-PDO \ RH-php72-PHP-プロセスRH-php72-PHP-石鹸RH-php72-PHP-opcache RH-php72-のphp-xmlの\ RH-php72-PHP-GMP RH-php72-PHP-PECL-apcu httpd24-mod_sslの "&& \ yumをインストール -y --setopt = tsflags = nodocs $ INSTALL_PKGS --nogpgcheck && \ RPM -V $ INSTALL_PKGS && \ yumの -yクリーンすべて--enablerepo = '*' ENV PHP_CONTAINER_SCRIPTS_PATH =を/ usr / share /コンテナのスクリプト/ PHP / \ App_Dataに = $ {APP_ROOT} / srcの\ PHP_DEFAULT_INCLUDE_PATH = / opt / RH / RH-php72 /ルートは、/ usr / share /梨\ PHP_SYSCONF_PATH = /などの/ opt / RH / rh- php72 \ PHP_HTTPD_CONF_FILE = RH-php72- php.conf \ HTTPD_CONFIGURATION_PATH = $ {APP_ROOT}の/ etc / conf.d \ HTTPD_MAIN_CONF_PATH =の/ etc /のhttpd / confに\ HTTPD_MAIN_CONF_D_PATH =の/ etc / HTTPD / conf.d \ HTTPD_VAR_RUN =の/ var /実行/ httpdの\ HTTPD_DATA_PATH =の/ var / WWW \ HTTPD_DATA_ORIG_PATH =は/ opt / RH / httpd24 /ルートの/ var / WWW \ HTTPD_VAR_PATH =は/ opt / RH / httpd24 /ルートの/ var \ SCL_ENABLED = rh- php72 #特定の言語の画像から$ STI_SCRIPTS_PATHにS2Iスクリプトをコピー COPY。/ s2i / binに/$ STI_SCRIPTS_PATH #コピーした画像に余分なファイル。 COPY。/ルート/ / へのファイルシステムの#リセット権限デフォルト値 RUNは/ usr /のlibexecに/コンテナセットアップ&& RPMファイル・アクセス権の USER 1001 #を設定し、デフォルトの言語の画像の利用印刷するCMDを CMD $ STI_SCRIPTS_PATH /使用状況を
https://github.com/sclorg/s2i-php-container/tree/master/7.2