在Mac系統(tǒng)下用Docker搭建Swoole開發(fā)環(huán)境

作為一款重新定義PHP的開源框架,Swoole讓PHP可以應(yīng)用于更多的場景。

對于一位PHP程序員來說,通過Swoole可以了解以往不曾接觸過的編程方法。

眾所周知,搭建開發(fā)環(huán)境其實是很麻煩的一件事,經(jīng)常會遇到各種各樣的問題。所以我用Docker搭建了一套Swoole環(huán)境,按照這篇教程,就可以非常簡單得開始Swoole之旅。

首先是安裝Docker,官網(wǎng)有詳細的安裝步驟: https://docs.docker.com/mac/step_one/

Mac用戶參考上述網(wǎng)址即可。對于其他系統(tǒng)的用戶來說,官網(wǎng)都有相應(yīng)的方法。這里不再細說。

以下的步驟也都是基于Mac系統(tǒng)來進行。

安裝完成后,在Launchpad里會看到Docker Quickstart Terminal這個名字的應(yīng)用,點擊后,會打開系統(tǒng)默認的終端,然后等一會兒,就可以看到鯨魚的畫像出現(xiàn)了。

要注意終端里的一條提示信息:

docker is configured to use the default machine with IP 192.168.99.100

記住這個IP地址,我們訪問容器時會用到。

為了驗證Docker是否運行起來,在打開的終端里輸入下面的命令:

docker images

如果Docker沒有正確運行,會看到下面的錯誤提示:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

確保Docker正確運行后,輸入下面的命令,獲取swoole鏡像:

docker pull koolob/swoole-docker

這個鏡像是基于php:5.6-cli的鏡像構(gòu)建,包括swoole的最新版本1.8.4,默認使用了下面的編譯參數(shù)進行編譯:

--enable-async-redis 
--enable-async-httpclient 
--enable-openssl 
--enable-jemalloc

swoole的編譯參數(shù)說明:http://wiki.swoole.com/wiki/page/437.html

這個鏡像的Dockerfile是開源的,有需要搭建自定義環(huán)境的朋友可以參考我的Dockerfile文件進行修改:Github

下載鏡像后,就可以運行一個容器,進入Swoole環(huán)境了。

輸入命令:

docker run -t -i koolob/swoole-docker /bin/bash

之后會進入到容器內(nèi)。

再次輸入:

php -r 'echo swoole_version()."\n";'

可以看到輸出了1.8.4,也就是當前swoole的版本號。

這樣我們就有了一個通過Docker構(gòu)建的Swoole環(huán)境。

接下來,我們可以把代碼和環(huán)境構(gòu)建成一個鏡像來運行。依然有個示例可以參考:

git clone https://github.com/koolob/swoole-docker-example.git

下載下來后,切換到目錄中,直接執(zhí)行

./build.sh

然后瀏覽器訪問地址:http://192.168.99.100:8080/ 就可以看到結(jié)果了,同時在終端中也能看到程序輸出的內(nèi)容。在終端里使用Ctrl+C就可以退出容器。

192.168.99.100這個IP就是上文提到的終端提示的IP

我們運行的是一個非常簡單的HTTP服務(wù),代碼位于src文件夾下:

$serv = new swoole_http_server("0.0.0.0", 8080);

$serv->on('Request', function($request, $response) {
    var_dump($request->get);
    var_dump($request->post);
    var_dump($request->cookie);
    var_dump($request->files);
    var_dump($request->header);
    var_dump($request->server);

    $response->cookie("User", "Swoole");
    $response->header("X-Server", "Swoole");
    $response->end("<h1>Hello Swoole!</h1>");
});

$serv->start();

build.sh腳本做的事就是構(gòu)建鏡像,并啟動一個容器。

新構(gòu)建的鏡像也很簡單,基于koolob/swoole-docker,開放8080端口,將src目錄中的內(nèi)容復(fù)制到鏡像內(nèi),并在容器運行時,執(zhí)行php代碼。

之后要做的事就是修改src中的代碼,執(zhí)行build.sh腳本,然后測試。

至此,我們的Swoole開發(fā)環(huán)境搭建完畢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,850評論 15 147
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎,基于容器化,沙箱機制的應(yīng)用部署技術(shù)???..
    sessionboy閱讀 4,008評論 2 49
  • 在Mac上安裝和使用Docker搭建laravel環(huán)境 首先當然是下載docker, 推薦使用增強型brewbre...
    小小奶狗閱讀 5,835評論 0 6
  • docker基本概念 1. Image Definition 鏡像 Image 就是一堆只讀層 read-only...
    慢清塵閱讀 9,005評論 1 21
  • 這句話很能理解,就是我很好,你也很好。這是人生會經(jīng)歷的四個階段的最后一個階段,之所以是最后一個,是因為很多人可能到...
    呆牛閱讀 1,062評論 0 1

友情鏈接更多精彩內(nèi)容