Windows 上用 Kitematic 免 build , 免寫 compose 來部屬一個 yii2 advanced 專案

Docker for windows 現在比較好用了,這幾天,我包了一個名稱叫 pigochu/c7-nginx-php-fpm 的 docker image,我用了一種讀取 VOLUME 中檔案可以覆蓋掉 container 內檔案的方式來完成以 UI 來部屬 php 專案的方式,做為日後開發測試用途。

這裡用 Kitematic 示範一個 yii2 advanced template 專案的部屬,當你打開 Kitematic 時,找一個名稱叫 pigochu/c7-nginx-php-fpm 的 Image,然後建立 cotainer。

yii2 的專案,建立一個叫 docker-settings 的目錄,並且目錄結構如下

docker-settting/
               /replace-files
                             /etc
                                  /nginx

然後直接寫一個 nginx.conf 放到 docket-setting/replace-files/etc/nginx 之下

接著用 Kitematic 將 container 的 VOLUME 中的 /var/www/html 掛載到 yii2 專案的根目錄,然後再把 VOLUME /docker-settings 掛載到 yii2 專案下的 docker-settings 目錄,接著重新啟動後,進入EXEC 模式,做一些初始化,如 init 及 composer install 等, 這個 container 就能跑 frontend 及 backend 了。若你不想進入 EXEC 模式,其實也可以直接在 Windows 上執行 composer 初始化的動作,也是可以的。

nginx.conf server 區段的設定範例如下,http://ip:port 就是你的 frontend , http://ip:port/backend/ 就是 backend

    server {
        set $project_root /var/www/html;

        charset utf-8;
        client_max_body_size 128M;
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         $project_root/frontend/web;
        index        index.php;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location ^~ /backend {
            rewrite ^/backend(.*)$ /backend/web$1 last;
        }

        location ^~ /backend/web {
            root $project_root;

            # uncomment the following, if you want to enable speaking URL in the backend
            #try_files $uri $uri/ /index.php$is_args$args;
            location ~ /\.(ht|svn|git) {
                deny all;
            }
            include /etc/nginx/snippets/php-fpm.conf;
        }
        location / {
            try_files $uri $uri/ /index.php$is_args$args;
        }

        # include default fastcgi:php-fpm setting
        include /etc/nginx/snippets/php-fpm.conf;
   }

上述設定檔只是 server 的區段,你可以將 container 內的 nginx.conf copy 到你的專案再進行修改 server 區段即可。

目前這個 Image,僅適合快速開發與測試用途,可達到完全用 UI 不用寫到任何 docker 設定及下命令的方式就能輕鬆開發及測試,但請勿用來當正式環境跑就是了。

發表迴響