小程序發布至今也有幾年了,圍繞小程序開發的生態做的非常豐富,云開發出來之后更是方便了我們快速開發上線一個小程序。使用云開發,我們無需自己去單獨購買阿里云,騰訊云的服務器,只要開通小程序云開發,即刻擁有云服務器環境,開通后可以免費使用1個月,但是配置不是很高,但這足以應付絕大多數的應用了,當然用的人多了也可以在小程序云開發上快速橫向擴展。今天就來說說怎么用小程序云托管部署php程序代碼。
1. 開通云開發
進入小程序管理后臺,點擊開發-云開發,進入后直接開通,這個是免費的。
2. 開通云托管
進入小程序開發者工具,點擊云開發:
在云開發控制臺開通云托管,也可以在 “設置 -> 拓展功能” 中開通。:
3. 創建服務
這里以PHP為例子,其他的都差不多,點擊創建服務,填寫服務名稱后點確定:
4. 準備代碼
創建一個空文件夾用于放我們的PHP代碼:
mkdir helloworld
cd helloworld
創建index.php并寫入如下內容:
<?php
echo 'Hello World!';
創建Dockerfile并編輯如下:
# 使用官方 PHP 7.3 鏡像.
# https://hub.docker.com/_/php
FROM php:7.3-Apache
# 將本地代碼復制到容器內
COPY index.php /var/www/html/
# Apache 配置文件內使用 8080 端口
RUN sed -i 's/80/8080/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
# 將 PHP 配置為開發環境
# 如果您需要配置為生產環境,可以運行以下命令
# RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# 參考:https://hub.docker.com/_/php#configuration
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
添加.dockerignore文件
Dockerfile
README.md
vendor
這個文件的內容是要排除指定的內容。
新建服務版本
給剛剛創建的服務添加一個版本:
選擇本地上傳:
云托管支持本地上傳和代碼庫拉取兩種方式:
- 本地上傳可以選擇文件夾或 ZIP 壓縮包進行上傳。需要上傳包含正確 Dockerfile 的代碼目錄,否則,將提示 Dockerfile 不合法。
- 代碼庫拉取支持 GitHub,GitLab 和 Gitee 的代碼庫拉取,需要點擊授權后,才可以看到自己的代碼倉庫。在彈出的界面完成代碼授權后,關閉即可看到自己的代碼倉庫。
需要注意,文件夾或 ZIP 壓縮包上傳的代碼中不能超過 2 MB
在創建版本時,可以選擇「稍后配置」或「開啟 100% 流量」兩種流量配置,若選擇「稍后配置」,該版本將不會被分配流量。
點擊確認后,就會自動幫你創建了:
點擊版本右側的「詳情」,可以查看版本的詳細信息,包括版本的構建日志,版本詳情以及實例信息:
- 構建日志:提供版本構建日志信息。若版本構建失敗,可以在下方建議處點擊「重新構建」
- 版本詳情:可以針對版本的備注和擴縮容實例數量進行調整
- 實例信息:可以看到當前容器的實例,對應的實例 ID 以及創建時間。點擊「Web Shell」,可以在彈出的窗口中對實例進行操作。
調用云托管服務
調用云托管服務需要基礎版本庫在2.13.1以上,先檢查下當前的基礎庫版本:
調用云托管服務
在小程序中,使用如下的代碼就可以調用云托管容器:
// 確認已經在 onLaunch 中調用過 wx.cloud.init 初始化環境
const res = await wx.cloud.callContainer({
path: '/container-helloworld', // 填入容器的訪問路徑(云托管-服務列表-路徑)
method: 'GET',
})
console.log(res)
在 Web 端,可以使用如下代碼進行調用:
// 初始化 Cloud 實例
// 容器調用必填環境id,不能為空
var c1 = new wx.cloud.Cloud({
resourceEnv: '環境id'
})
await c1.init()
// 返回值同 wx.request
const res = await c1.callContainer({
path: '/container-helloworld', // 填入容器的訪問路徑(云托管-服務列表-路徑)
// 其余參數同 wx.request
method: 'POST',
})
console.log(res)
學會部署PHP,后其他環境也都差不多,比如node、Python,都大同小異。