{"id":28862,"date":"2023-12-05T12:32:17","date_gmt":"2023-11-26T07:16:28","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/"},"modified":"2025-08-12T10:30:34","modified_gmt":"2025-08-12T02:30:34","slug":"%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/","title":{"rendered":"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f"},"content":{"rendered":"<h1>\u9996\u5148\u5728Minishift\uff08Openshift\uff09\u73af\u5883\u4e2d\uff0c\u6211\u5c06\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u7528PHP\u521b\u5efa\u5185\u5bb9\u7684\u6a21\u677f\u3002<br \/>\n\u867d\u7136RHCC\u548c\u76ee\u5f55\u4e2d\u4e5f\u6709PHP\uff0c\u4f46\u7531\u4e8e\u5b89\u88c5Composer\u5e76\u4e0b\u8f7d\u5305\u975e\u5e38\u6162\u4e14\u4ee4\u4eba\u607c\u706b\uff0c\u6211\u51b3\u5b9a\u4f7f\u7528\u4e0d\u5e26Composer\u7684\u6a21\u677f\u3002<\/p>\n<p>\u8fd9\u662f\u4e00\u4e2a\u4f7f\u7528CMS\u548c\u72ec\u7279\u5185\u5bb9\u8fdb\u884c\u5b89\u88c5\u5e76\u4f7f\u7528\u7684\u573a\u666f\u5f62\u8c61\uff08^^\u266a)<\/p>\n<h1>\u6784\u6210\u57fa\u7840\u662f\u4f7f\u7528\u76ee\u5f55\u4e2d\u6240\u6709\u7684\u6620\u50cf\u3002<br \/>\nPHP\u7684Pod\u662f\u524d\u7aef\uff0c\u6709\u4e24\u4e2a\u3002\u6211\u4eec\u5c06\u4f7f\u7528s2i\u57fa\u7840\u7684\u76ee\u5f55\u4e2d\u7684PHP\u6a21\u677f\u3002\u4e3a\u4e86\u80fd\u591f\u4ece\u4e24\u4e2a\u5bb9\u5668\u4e2d\u5f15\u7528\u76f8\u540c\u7684\u5185\u5bb9\uff0c\u5b83\u4eec\u5c06\u5177\u6709\u5e26\u6709PV\u7684\u529f\u80fd\u3002<br \/>\nmariadb\u7684Pod\u662f\u540e\u7aef\uff0c\u53ea\u6709\u4e00\u4e2a\u3002\u5f53\u7136\uff0c\u5b83\u4e5f\u5c06\u5177\u6709\u5e26\u6709PV\u7684\u914d\u7f6e\u3002<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657cfeec37434c4406bc6ec2\/5-0.png\" alt=\"\u56f31.png\" \/><\/p>\n<h1>Git\u7684\u76ee\u5f55\u7ed3\u6784\u8fd9\u662f\u4e00\u4e2a\u975e\u5e38\u7b80\u5355\u7684\u914d\u7f6e\u3002<br \/>\n\u552f\u4e00\u9700\u8981\u6ce8\u610f\u7684\u662f\uff0c\u9996\u5148\u5c06\u6e90\u4ee3\u7801\u6ce8\u518c\u5230webroot_src\u4e2d\uff0c\u7136\u540e\u5728Deploy\u8fc7\u7a0b\u4e2d\u901a\u8fc7\u8fd0\u884c\u811a\u672c\u5c06\u5176\u590d\u5236\u5230\u6302\u8f7d\u7684\u6301\u4e45\u5377(webroot)\u4e0a\u3002<\/p>\n<pre class=\"post-pre\"><code>\u251c\u2500 .s2i\/bin\r\n\u2502\u3000\u3000\u251c\u2500 assemble\r\n\u2502\u3000\u3000\u2514\u2500 run\r\n\u251c\u2500 openshift\/templates\r\n\u2502\u3000\u3000\u2514\u2500 php-mariadb-persistent.json\r\n\u251c\u2500 webroot\r\n\u2502\u3000\u3000\u2514\u2500 .gitkeep\r\n\u2514\u2500 webroot_src\r\n \u3000\u3000\u2514\u2500 PHP\u30bd\u30fc\u30b9\r\n<\/code><\/pre>\n<p>Git\uff1ahttps:\/\/gitlab.com\/imp555\/php-mariadb-persistent.git<\/p>\n<h1>\u4f7f\u7528\u65b9\u6cd5\u5c06PHP\u6e90\u4ee3\u7801\u63a8\u9001\u5230webroot_src\u6587\u4ef6\u5939\u4e0b\u3002<br \/>\n\u4f7f\u7528openshift\/templates\/php-mariadb-persistent.json\u5728\u9879\u76ee\u4e2d\u521b\u5efaPods\u3002<br \/>\n\u5b8c\u6210\u4ee5\u4e0a\u266a<\/p>\n<p>\u7531\u4e8e\u6e90\u4ee3\u7801\u8fdb\u5165\u4e86PV\u9886\u57df\uff0c\u867d\u7136\u53ef\u4ee5\u4ece\u4e24\u4e2aPod\u4e2d\u770b\u5230\u6e90\u4ee3\u7801\u662f\u4e00\u4ef6\u597d\u4e8b\uff0c\u4f46\u5728\u66f4\u65b0\u6e90\u4ee3\u7801\u65f6\u4f1a\u9047\u5230\u95ee\u9898\u3002<br \/>\n\u56e0\u6b64\uff0c\u5728\u8fd0\u884c\u811a\u672c\u4e2d\uff0c\u5982\u679c\u5b58\u5728FORCE_UPDATE_SOURCE\uff0c\u5219\u5c06\u5176\u8bbe\u7f6e\u4e3a\u8986\u76d6\u3002<\/p>\n<p>\u7136\u800c&#8230;\u5f53\u66f4\u6539\u6e90\u4ee3\u7801\u65f6\u9700\u8981\u8fdb\u884c\u91cd\u65b0\u6784\u5efa\uff0c\u5982\u679c\u4fdd\u6301\u4e0d\u53d8\uff0c\u5c06\u4f1a\u6267\u884c\u90e8\u7f72\u64cd\u4f5c\uff0c<br \/>\n\u5f53\u66f4\u6539FORCE_UPDATE_SOURCE\u65f6\uff0c\u4e5f\u4f1a\u589e\u52a0\u65e0\u7528\u7684\u90e8\u7f72\u64cd\u4f5c&#8230;\u3002<br \/>\n\u6211\u8ba4\u4e3a\u8fd9\u65b9\u9762\u8fd8\u6709\u8003\u8651\u7684\u4f59\u5730(;&#8217;\u2200&#8217;)<\/p>\n<h1>Openshift\u6a21\u677f<br \/>\n\u6a19\u6e96\u7684 PHP \u6a21\u677f\u7684\u8b8a\u66f4\u5982\u4e0b\uff1a<br \/>\n&#8211; \u522a\u9664\u4e86\u8207 composer \u76f8\u95dc\u7684\u90e8\u5206<br \/>\n&#8211; \u6dfb\u52a0\u4e86\u7528\u65bc PHP \u7684 PV<br \/>\n&#8211; \u6dfb\u52a0\u4e86\u74b0\u5883\u8b8a\u6578 FORCE_UPDATE_SOURCE<\/p>\n<pre class=\"post-pre\"><code><span class=\"p\">{<\/span>\r\n  <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Template\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"php-mariadb-persistent\"<\/span><span class=\"p\">,<\/span>\r\n    <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"openshift.io\/display-name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PHP + MariaDB\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"An example PHP application with a MariaDB. For more information about using this template, including OpenShift considerations, see https:\/\/gitlab.com\/imp555\/php-mariadb-persistent.git\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"tags\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"quickstart,php,mariadb\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"iconClass\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"icon-php\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"openshift.io\/long-description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"This template defines resources needed to develop a PHP application, including a build configuration, application deployment configuration, and database deployment configuration.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"openshift.io\/documentation-url\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"https:\/\/gitlab.com\/imp555\/php-mariadb-persistent.git\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"template.openshift.io\/bindable\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"false\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">},<\/span>\r\n  <span class=\"nl\">\"message\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"The following service(s) have been created in your project: ${NAME}, ${DATABASE_SERVICE_NAME}.<\/span><span class=\"se\">\\n\\n<\/span><span class=\"s2\">For more information about using this template, including OpenShift considerations, see https:\/\/gitlab.com\/imp555\/php-mariadb-persistent.git\"<\/span><span class=\"p\">,<\/span>\r\n  <span class=\"nl\">\"labels\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"template\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"php-mariadb-persistent\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"app\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"php-mariadb-persistent\"<\/span>\r\n  <span class=\"p\">},<\/span>\r\n  <span class=\"nl\">\"objects\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Secret\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"stringData\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"database-user\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_USER}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"database-password\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_PASSWORD}\"<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PersistentVolumeClaim\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"accessModes\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"s2\">\"ReadWriteMany\"<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"resources\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"requests\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"storage\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${PHP_VOLUME_CAPACITY}\"<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Service\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Exposes and load balances the application pods\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"service.alpha.openshift.io\/dependencies\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"[{<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">name<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">: <\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">${DATABASE_SERVICE_NAME}<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">, <\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">kind<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">: <\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">Service<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">}]\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"ports\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"web\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"port\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">8080<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"targetPort\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">8080<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"selector\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Route\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"host\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${APPLICATION_DOMAIN}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"to\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Service\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageStream\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Keeps track of changes in the application image\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"BuildConfig\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Defines how to build the application\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"template.alpha.openshift.io\/wait-for-ready\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"true\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"source\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Git\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"git\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"uri\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${SOURCE_REPOSITORY_URL}\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"ref\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${SOURCE_REPOSITORY_REF}\"<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"nl\">\"contextDir\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${CONTEXT_DIR}\"<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"strategy\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Source\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"sourceStrategy\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"from\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageStreamTag\"<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"namespace\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAMESPACE}\"<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"php:${PHP_VERSION}\"<\/span>\r\n            <span class=\"p\">},<\/span>\r\n            <span class=\"nl\">\"env\"<\/span><span class=\"p\">:<\/span>  <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"FORCE_UPDATE_SOURCE\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${FORCE_UPDATE_SOURCE}\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n            <span class=\"p\">]<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"output\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"to\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageStreamTag\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}:latest\"<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"triggers\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageChange\"<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ConfigChange\"<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"GitHub\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"github\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"secret\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${GITHUB_WEBHOOK_SECRET}\"<\/span>\r\n            <span class=\"p\">}<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">]<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DeploymentConfig\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Defines how to deploy the application server\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"template.alpha.openshift.io\/wait-for-ready\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"true\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"strategy\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Recreate\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"triggers\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageChange\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"imageChangeParams\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"automatic\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"containerNames\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"php-mariadb-persistent\"<\/span>\r\n              <span class=\"p\">],<\/span>\r\n              <span class=\"nl\">\"from\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageStreamTag\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}:latest\"<\/span>\r\n              <span class=\"p\">}<\/span>\r\n            <span class=\"p\">}<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ConfigChange\"<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"replicas\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">2<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"selector\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"template\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"labels\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n            <span class=\"p\">}<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"volumes\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n              <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}-data\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"persistentVolumeClaim\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"claimName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span>\r\n                <span class=\"p\">}<\/span>\r\n              <span class=\"p\">}<\/span>\r\n            <span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"containers\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n              <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"php-mariadb-persistent\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"image\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\" \"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"ports\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"containerPort\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">8080<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">],<\/span>\r\n                <span class=\"nl\">\"volumeMounts\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}-data\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"mountPath\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\/opt\/app-root\/src\/webroot\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">],<\/span>\r\n                <span class=\"nl\">\"readinessProbe\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"timeoutSeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"initialDelaySeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"periodSeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">60<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"failureThreshold\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"tcpSocket\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"port\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">8080<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">},<\/span>\r\n                <span class=\"nl\">\"livenessProbe\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"timeoutSeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"initialDelaySeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">30<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"periodSeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">60<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"failureThreshold\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"httpGet\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"path\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\/.health.html\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"port\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">8080<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">},<\/span>\r\n                <span class=\"nl\">\"env\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_SERVICE_NAME\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_ENGINE\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_ENGINE}\"<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_NAME\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_NAME}\"<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_USER\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"valueFrom\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                      <span class=\"nl\">\"secretKeyRef\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                        <span class=\"nl\">\"name\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n                        <span class=\"nl\">\"key\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"database-user\"<\/span>\r\n                      <span class=\"p\">}<\/span>\r\n                    <span class=\"p\">}<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_PASSWORD\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"valueFrom\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                      <span class=\"nl\">\"secretKeyRef\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                        <span class=\"nl\">\"name\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n                        <span class=\"nl\">\"key\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"database-password\"<\/span>\r\n                      <span class=\"p\">}<\/span>\r\n                    <span class=\"p\">}<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"OPCACHE_REVALIDATE_FREQ\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${OPCACHE_REVALIDATE_FREQ}\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">],<\/span>\r\n                <span class=\"nl\">\"resources\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"limits\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"memory\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${MEMORY_LIMIT}\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">}<\/span>\r\n              <span class=\"p\">}<\/span>\r\n            <span class=\"p\">]<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PersistentVolumeClaim\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"accessModes\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"s2\">\"ReadWriteOnce\"<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"resources\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"requests\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"storage\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DB_VOLUME_CAPACITY}\"<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Service\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Exposes the database server\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"ports\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"mariadb\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"port\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3306<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"targetPort\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3306<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"selector\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DeploymentConfig\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"apiVersion\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"v1\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"annotations\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Defines how to deploy the database\"<\/span><span class=\"p\">,<\/span>\r\n          <span class=\"nl\">\"template.alpha.openshift.io\/wait-for-ready\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"true\"<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">},<\/span>\r\n      <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n        <span class=\"nl\">\"strategy\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Recreate\"<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"triggers\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageChange\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"imageChangeParams\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"automatic\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n              <span class=\"nl\">\"containerNames\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                <span class=\"s2\">\"mariadb\"<\/span>\r\n              <span class=\"p\">],<\/span>\r\n              <span class=\"nl\">\"from\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"kind\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ImageStreamTag\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"namespace\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${NAMESPACE}\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"mariadb:${MARIADB_VERSION}\"<\/span>\r\n              <span class=\"p\">}<\/span>\r\n            <span class=\"p\">}<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"type\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"ConfigChange\"<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">],<\/span>\r\n        <span class=\"nl\">\"replicas\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span>\r\n        <span class=\"nl\">\"selector\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span>\r\n        <span class=\"p\">},<\/span>\r\n        <span class=\"nl\">\"template\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n          <span class=\"nl\">\"metadata\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span><span class=\"p\">,<\/span>\r\n            <span class=\"nl\">\"labels\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n              <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span>\r\n            <span class=\"p\">}<\/span>\r\n          <span class=\"p\">},<\/span>\r\n          <span class=\"nl\">\"spec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n            <span class=\"nl\">\"volumes\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n              <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}-data\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"persistentVolumeClaim\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"claimName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}\"<\/span>\r\n                <span class=\"p\">}<\/span>\r\n              <span class=\"p\">}<\/span>\r\n            <span class=\"p\">],<\/span>\r\n            <span class=\"nl\">\"containers\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n              <span class=\"p\">{<\/span>\r\n                <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"mariadb\"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"image\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\" \"<\/span><span class=\"p\">,<\/span>\r\n                <span class=\"nl\">\"ports\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"containerPort\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3306<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">],<\/span>\r\n                <span class=\"nl\">\"volumeMounts\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_SERVICE_NAME}-data\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"mountPath\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\/var\/lib\/mysql\/data\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">],<\/span>\r\n                <span class=\"nl\">\"readinessProbe\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"timeoutSeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"initialDelaySeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">5<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"exec\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"command\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span> <span class=\"s2\">\"\/bin\/sh\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"-i\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"-c\"<\/span><span class=\"p\">,<\/span> <span class=\"s2\">\"MYSQL_PWD='${DATABASE_PASSWORD}' mysql -h 127.0.0.1 -u ${DATABASE_USER} -D ${DATABASE_NAME} -e 'SELECT 1'\"<\/span> <span class=\"p\">]<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">},<\/span>\r\n                <span class=\"nl\">\"livenessProbe\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"timeoutSeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">1<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"initialDelaySeconds\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">30<\/span><span class=\"p\">,<\/span>\r\n                  <span class=\"nl\">\"tcpSocket\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"port\"<\/span><span class=\"p\">:<\/span> <span class=\"mi\">3306<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">},<\/span>\r\n                <span class=\"nl\">\"env\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MYSQL_USER\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"valueFrom\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                      <span class=\"nl\">\"secretKeyRef\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                        <span class=\"nl\">\"name\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n                        <span class=\"nl\">\"key\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"database-user\"<\/span>\r\n                      <span class=\"p\">}<\/span>\r\n                    <span class=\"p\">}<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MYSQL_PASSWORD\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"valueFrom\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                      <span class=\"nl\">\"secretKeyRef\"<\/span> <span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                        <span class=\"nl\">\"name\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"${NAME}\"<\/span><span class=\"p\">,<\/span>\r\n                        <span class=\"nl\">\"key\"<\/span> <span class=\"p\">:<\/span> <span class=\"s2\">\"database-password\"<\/span>\r\n                      <span class=\"p\">}<\/span>\r\n                    <span class=\"p\">}<\/span>\r\n                  <span class=\"p\">},<\/span>\r\n                  <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MYSQL_DATABASE\"<\/span><span class=\"p\">,<\/span>\r\n                    <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${DATABASE_NAME}\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">],<\/span>\r\n                <span class=\"nl\">\"resources\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                  <span class=\"nl\">\"limits\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\r\n                    <span class=\"nl\">\"memory\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"${MEMORY_MYSQL_LIMIT}\"<\/span>\r\n                  <span class=\"p\">}<\/span>\r\n                <span class=\"p\">}<\/span>\r\n              <span class=\"p\">}<\/span>\r\n            <span class=\"p\">]<\/span>\r\n          <span class=\"p\">}<\/span>\r\n        <span class=\"p\">}<\/span>\r\n      <span class=\"p\">}<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">],<\/span>\r\n  <span class=\"nl\">\"parameters\"<\/span><span class=\"p\">:<\/span> <span class=\"p\">[<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"NAME\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Name\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"The name assigned to all of the frontend objects defined in this template.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"php-mariadb-persistent\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"NAMESPACE\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Namespace\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"The OpenShift Namespace where the ImageStream resides.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"openshift\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PHP_VERSION\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PHP Version\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Version of PHP image to be used (7.1 or latest).\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"7.1\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MARIADB_VERSION\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MariaDB Version\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Version of MariaDB image to be used (10.2 or latest).\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"10.2\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MEMORY_LIMIT\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Memory Limit\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Maximum amount of memory the PHP container can use.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"512Mi\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"MEMORY_MYSQL_LIMIT\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Memory Limit (MariaDB)\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Maximum amount of memory the MariaDB container can use.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"512Mi\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PHP_VOLUME_CAPACITY\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PHP Volume Capacity\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"PHP volume space available for data, e.g. 512Mi, 2Gi\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"1Gi\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DB_VOLUME_CAPACITY\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database Volume Capacity\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database volume space available for data, e.g. 512Mi, 2Gi\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"1Gi\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"SOURCE_REPOSITORY_URL\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Git Repository URL\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"The URL of the repository with your application source code.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"https:\/\/gitlab.com\/imp555\/php-mariadb-persistent.git\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"SOURCE_REPOSITORY_REF\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Git Reference\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Set this to a branch name, tag or other ref of your repository if you are not using the default branch.\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"CONTEXT_DIR\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Context Directory\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Set this to the relative path to your project if it is not in the root of your repository.\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"APPLICATION_DOMAIN\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Application Hostname\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"The exposed hostname that will route to the PHP service, if left blank a value will be defaulted.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"GITHUB_WEBHOOK_SECRET\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"GitHub Webhook Secret\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Github trigger secret.  A difficult to guess string encoded as part of the webhook URL.  Not encrypted.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"generate\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"expression\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"from\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"[a-zA-Z0-9]{40}\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_SERVICE_NAME\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database Service Name\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"mariadb\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_ENGINE\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database Engine\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database engine: postgresql, mysql or sqlite (default).\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"mysql\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_NAME\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database Name\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"default\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_USER\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database User\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"required\"<\/span><span class=\"p\">:<\/span> <span class=\"kc\">true<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"dbuser\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"DATABASE_PASSWORD\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Database Password\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"generate\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"expression\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"from\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"[a-zA-Z0-9]{16}\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"OPCACHE_REVALIDATE_FREQ\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"OPcache Revalidation Frequency\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"2\"<\/span>\r\n    <span class=\"p\">},<\/span>\r\n    <span class=\"p\">{<\/span>\r\n      <span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"FORCE_UPDATE_SOURCE\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"displayName\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"Force Update Source Files\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"description\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"If you need update source, set true.\"<\/span><span class=\"p\">,<\/span>\r\n      <span class=\"nl\">\"value\"<\/span><span class=\"p\">:<\/span> <span class=\"s2\">\"\"<\/span>\r\n    <span class=\"p\">}<\/span>\r\n  <span class=\"p\">]<\/span>\r\n<span class=\"p\">}<\/span>\r\n<\/code><\/pre>\n<h1>\u6c47\u96c6\u5267\u672c (hu\u00ec j\u00ed j\u00f9<br \/>\n\u5728assemble\u811a\u672c\u4e2d\uff0c\u6211\u4eec\u5728\u8c03\u7528\u6807\u51c6\u7684assemble\u4e4b\u540e\u8fdb\u884c\u4e86Apache\u914d\u7f6e\u7684\u66f4\u6539\u4ee5\u53caphp.ini\u7684\u8bbe\u7f6e\u66f4\u6539\u3002<\/p>\n<p>httpd.con\u7684\u914d\u7f6e\u66f4\u6539\u5982\u4e0b:<br \/>\n&#8211; \u4e3b\u8981\u7684conf\u6587\u4ef6\u662f${HTTPD_MAIN_CONF_PATH}\/httpd.conf<br \/>\n&#8211; \u5305\u542b\u7684conf\u6587\u4ef6\u662f${HTTPD_MAIN_CONF_D_PATH}<\/p>\n<p>\u5bf9\u4e8ephp.ini\u7684\u8bbe\u7f6e\u66f4\u6539\uff0c\u8bf7\u5728${APP_ROOT}\/etc\/php.ini.template\u4e0a\u8fdb\u884c\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/bin\/bash -e<\/span>\r\n\r\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"*--------------------------------------------------------------------------[ENV]\"<\/span>\r\n<span class=\"nb\">set\r\n\r\necho<\/span> <span class=\"s2\">\"*---------------------------------------------------------[exec assemble script]\"<\/span>\r\n<span class=\"nb\">source<\/span> <span class=\"k\">${<\/span><span class=\"nv\">STI_SCRIPTS_PATH<\/span><span class=\"k\">}<\/span>\/assemble\r\n\r\n<span class=\"o\">[[<\/span> <span class=\"nt\">-d<\/span> .\/tmp <span class=\"o\">]]<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nb\">chmod<\/span> <span class=\"nt\">-R<\/span> go+rw .\/tmp\r\n\r\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"*--------------------------------------------------------------[apache settings]\"<\/span>\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'1iHeader unset X-Powered-By'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'1iTraceEnable Off'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'1iServerSignature Off'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'1iServerTokens Prod'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n\r\n\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/\\\/opt\\\/app-root\\\/src\/\\\/opt\\\/app-root\\\/src\\\/webroot\/g'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'\/^&lt;Directory \\\"\\\/opt\\\/app-root\\\/src\\\/webroot\\\"&gt;\/a Require method GET POST'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/Options Indexes FollowSymLinks\/Options FollowSymLinks\/g'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_PATH<\/span><span class=\"k\">}<\/span>\/httpd.conf\r\n<span class=\"nb\">rm<\/span> <span class=\"nt\">-f<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_D_PATH<\/span><span class=\"k\">}<\/span>\/autoindex.conf\r\n<span class=\"nb\">rm<\/span> <span class=\"nt\">-f<\/span> <span class=\"k\">${<\/span><span class=\"nv\">HTTPD_MAIN_CONF_D_PATH<\/span><span class=\"k\">}<\/span>\/welcome.conf\r\n\r\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"*-----------------------------------------------------------------[php settings]\"<\/span>\r\n\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/date.timezone = GMT\/date.timezone = \\\"Asia\\\/Tokyo\\\"\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.language = Japanese\/mbstring.language = Japanese\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.internal_encoding =\/mbstring.internal_encoding = UTF-8\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.http_input =\/mbstring.http_input = UTF-8\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.http_output =\/mbstring.http_output = pass\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.encoding_translation = Off\/mbstring.encoding_translation = On\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.detect_order = auto\/mbstring.detect_order = auto\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<span class=\"nb\">sed<\/span> <span class=\"nt\">-i<\/span> <span class=\"s1\">'s\/;mbstring.substitute_character = none\/mbstring.substitute_character = none\/'<\/span> <span class=\"k\">${<\/span><span class=\"nv\">APP_ROOT<\/span><span class=\"k\">}<\/span>\/etc\/php.ini.template\r\n<\/code><\/pre>\n<h1>\u6267\u884c\u811a\u672c<br \/>\n\u5982\u679c\u5728run\u811a\u672c\u4e2d\u9700\u8981\u9996\u5148\u590d\u5236\u6e90\u4ee3\u7801\uff0c\u5219\u5c06\u5176\u590d\u5236\u5230PV\u533a\u57df\uff0c\u5e76\u6700\u540e\u8c03\u7528\u6807\u51c6\u7684run\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"c\">#!\/bin\/bash -e<\/span>\r\n\r\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"*--------------------------------------------------------------------------[ENV]\"<\/span>\r\n<span class=\"nb\">set\r\n\r\necho<\/span> <span class=\"s2\">\"*-----------------------------------------------------------[install php source]\"<\/span>\r\n<span class=\"k\">if<\/span> <span class=\"o\">[<\/span> <span class=\"nt\">-n<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">FORCE_UPDATE_SOURCE<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">]<\/span> <span class=\"o\">||<\/span> <span class=\"o\">[<\/span> <span class=\"nt\">-z<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">$(<\/span><span class=\"nb\">ls<\/span> ~\/webroot\/<span class=\"si\">)<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n  <\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"-&gt; Install source code...\"<\/span>\r\n  <span class=\"nb\">cp<\/span> <span class=\"nt\">-Rf<\/span> ~\/webroot_src\/<span class=\"k\">*<\/span> ~\/webroot\/\r\n  <span class=\"k\">if<\/span> <span class=\"o\">[<\/span> <span class=\"nt\">-z<\/span> <span class=\"s2\">\"<\/span><span class=\"si\">$(<\/span><span class=\"nb\">ls<\/span> ~\/webroot\/.h<span class=\"k\">*<\/span><span class=\"si\">)<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">]<\/span><span class=\"p\">;<\/span> <span class=\"k\">then\r\n    <\/span><span class=\"nb\">cp<\/span> <span class=\"nt\">-Rf<\/span> ~\/webroot_src\/.h<span class=\"k\">*<\/span> ~\/webroot\/\r\n  <span class=\"k\">fi\r\nfi\r\n\r\n<\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"*--------------------------------------------------------------[exec run script]\"<\/span>\r\n<span class=\"nb\">export <\/span><span class=\"nv\">DOCUMENTROOT<\/span><span class=\"o\">=<\/span>\/webroot\/\r\n<span class=\"nb\">source<\/span> <span class=\"k\">${<\/span><span class=\"nv\">STI_SCRIPTS_PATH<\/span><span class=\"k\">}<\/span>\/run\r\n<\/code><\/pre>\n<h1>\u6700\u540e\u672c\u6b21\u6a21\u677f<br \/>\nreadinessProbe\u4f1a\u901a\u8fc7TCP\u8bbf\u95ee8080\u7aef\u53e3\uff0c<br \/>\nlivenessProbe\u5219\u8bbe\u8ba1\u4e3a\u8bbf\u95ee\/.health.html\u3002<\/p>\n<p>\u5b89\u88c5CMS\u7b49\u8f6f\u4ef6\u53ef\u80fd\u4f1a\u7531\u4e8e.htaccess\u6587\u4ef6\u63a7\u5236\u800c\u5bfc\u81f4\u65e0\u6cd5\u8bbf\u95ee\/.health.html\u7684\u60c5\u51b5\u53d1\u751f\u3002<\/p>\n<p>\u5982\u679c\u90e8\u7f72\u65f6\u51fa\u73b0 &#8220;CrashLoopBackOff&#8221; \u7684\u60c5\u51b5\uff0c\u8bf7\u5148\u5c1d\u8bd5\u5220\u9664 livenessProbe \u5e76\u91cd\u65b0\u8bbe\u7f6e\uff0c\u7136\u540e\u5c06\u5176\u66ff\u6362\u4e3a\u9002\u5f53\u7684 URL\u3002<\/p>\n<pre class=\"post-pre\"><code>                <span class=\"s2\">\"<\/span><span class=\"s\">readinessProbe\"<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">timeoutSeconds\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">3<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">initialDelaySeconds\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">3<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">periodSeconds\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">60<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">failureThreshold\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">3<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">tcpSocket\"<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{<\/span>\r\n                    <span class=\"s2\">\"<\/span><span class=\"s\">port\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">8080<\/span>\r\n                  <span class=\"pi\">}<\/span>\r\n                <span class=\"pi\">}<\/span><span class=\"err\">,<\/span>\r\n                <span class=\"s2\">\"<\/span><span class=\"s\">livenessProbe\"<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">timeoutSeconds\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">3<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">initialDelaySeconds\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">30<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">periodSeconds\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">60<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">failureThreshold\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">3<\/span><span class=\"pi\">,<\/span>\r\n                  <span class=\"s2\">\"<\/span><span class=\"s\">httpGet\"<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{<\/span>\r\n                    <span class=\"s2\">\"<\/span><span class=\"s\">path\"<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">\/.health.html\"<\/span><span class=\"pi\">,<\/span>\r\n                    <span class=\"s2\">\"<\/span><span class=\"s\">port\"<\/span><span class=\"pi\">:<\/span> <span class=\"nv\">8080<\/span>\r\n                  <span class=\"pi\">}<\/span>\r\n                <span class=\"pi\">}<\/span><span class=\"err\">,<\/span>\r\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u9996\u5148\u5728Minishift\uff08Openshift\uff09\u73af\u5883\u4e2d\uff0c\u6211\u5c06\u521b\u5efa\u4e00\u4e2a\u7528\u4e8e\u7528PHP\u521b\u5efa\u5185\u5bb9\u7684\u6a21\u677f\u3002 \u867d\u7136RHCC\u548c [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[227],"class_list":["post-28862","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-227"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"\u5173\u4e8e\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u5728openshift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684php\u6a21\u677f\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\" \/>\n<meta property=\"og:description\" content=\"\u5173\u4e8e\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\u7684\u6280\u672f\u6587\u7ae0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u5728openshift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684php\u6a21\u677f\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-11-26T07:16:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-12T02:30:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657cfeec37434c4406bc6ec2\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u6587, \u7fd4\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6587, \u7fd4\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/\",\"name\":\"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-11-26T07:16:28+00:00\",\"dateModified\":\"2025-08-12T02:30:34+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\"},\"description\":\"\u5173\u4e8e\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\u7684\u6280\u672f\u6587\u7ae0\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c\",\"name\":\"\u6587, \u7fd4\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g\",\"caption\":\"\u6587, \u7fd4\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f - Blog - Silicon Cloud","description":"\u5173\u4e8e\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\u7684\u6280\u672f\u6587\u7ae0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u5728openshift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684php\u6a21\u677f\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f","og_description":"\u5173\u4e8e\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\u7684\u6280\u672f\u6587\u7ae0","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/\u6211\u5c1d\u8bd5\u5728openshift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684php\u6a21\u677f\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-11-26T07:16:28+00:00","article_modified_time":"2025-08-12T02:30:34+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657cfeec37434c4406bc6ec2\/5-0.png"}],"author":"\u6587, \u7fd4","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6587, \u7fd4","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"1 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/","name":"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-11-26T07:16:28+00:00","dateModified":"2025-08-12T02:30:34+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c"},"description":"\u5173\u4e8e\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f\u7684\u6280\u672f\u6587\u7ae0","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"\u6211\u5c1d\u8bd5\u5728OpenShift\u4e0a\u521b\u5efa\u4e86\u4e00\u4e2a\u7b80\u5355\u7684PHP\u6a21\u677f"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/64d5cc7727fffbff2f9a2a8da1de3e5c","name":"\u6587, \u7fd4","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/920c3d673e0bccacc98e5e6b7149bb3c22edd8d39cb753e5d7d7e471498118a1?s=96&d=mm&r=g","caption":"\u6587, \u7fd4"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/wenxiang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/%e6%88%91%e5%b0%9d%e8%af%95%e5%9c%a8openshift%e4%b8%8a%e5%88%9b%e5%bb%ba%e4%ba%86%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84php%e6%a8%a1%e6%9d%bf%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/28862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=28862"}],"version-history":[{"count":3,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/28862\/revisions"}],"predecessor-version":[{"id":111399,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/28862\/revisions\/111399"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=28862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=28862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=28862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}