by Devin Yang

建立於: 7年前 ( 更新: 7年前 )

為了讓container可以被更靈活運用,D-Laravel釋出v1.0.0版了,此版本為不向下相容變更

不相容變更的意思

-舊的./console./create這兩隻bash無法正常使用在v1.0.0新的版本。
-舊的原Laravel專案的env上的資料庫IP(127.0.0.1)位置要變更為MySQL container的service name (db)。
 DB_HOST=db
-如果您有自訂的nginx設定檔需調整php-fpm的連接方式。
 fastcgi_pass php:9000;
-如果您有自訂的docker-compose-custom.yml需調整為新的。

當您用git pull直接進行更新至v1.0.0時:

正常情況下,您只需調整DB_HOST的位置。
您需修改舊有的Laravel專案上的.env檔,DB_HOST=127.0.0.1變更為DB_HOST=db
如果您有自訂的docker-compose-custom.yml檔,
請使用docker-compose-normaldocker-compose-random為範本進行修改。

關於這次的變更:

v1.0.0以前的docker-compose的yaml檔,使用network_mod: "service:web" 我們可以想成,把三個container服務的網路都綁在了web container服務上
因此設定上,我們連接php-fpm及mysql都使用本機連loopback的IP位置: 127.0.0.1。

v1.0.0新的設定docker-compose的yaml檔改採networks,我們可以把他想成,三個container 服務(webphpdb)都加入了自訂的網路中,
所以web的container(即是nginx)服務要使用php-fpm需指定php container的service name.(這裡叫php)
下方為etc/default.conf的片段,原fastcgi_pass 127.0.0.1:9000;已調整為fastcgi_pass php:9000;
 location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_read_timeout 500;
    }
新版本create bash,例如:使用./create test1這個project時,
DB_HOST=127.0.0.1,在新版(v1.0.0)會自動變更為DB_HOST=db
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=test1
DB_USERNAME=homestead
DB_PASSWORD=secret

舊版(v1.0.0之前)更新到新版本(v1.0.0)

安全的更新方式,我們可以抓D-Laravel v1.0.0版本下來測試。
將舊版本的sites/內的project拷貝到新版v.1.0.0的sites/內。
包含資料的資料夾data/拷貝到v1.0.0的目錄內。
(請確認docker-compose.yml新版使用的DB image版本與舊版本相同,
差異太大的mysql image會造成DB container啟動失敗
)
並修正sites/內laravel project的.env檔,DB_HOST=127.0.0.1變更為DB_HOST=db
必免有port充突,我們可以停掉舊版的D-Laravel,
再啟動v1.0.0版的d-laravel,確認運作是否正常。
 

Tags: d-laravel docker laravel docker-compose

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


docker, tinkerwell, tinker, laravel

Tinkerwell與docker環境運用

其實我最近不用Tinkerwell了,因為老是要我花錢更新。要測試直接ssh 主機不就搞定啦不是?

docker laravel

閒聊D-Laravel的console指令

D-Laravel的console指令讓我們快速的了解他執行了什麼。如果使用docker-compose是怎麼執行的呢? 我們來看看吧。

laravel docker

關於D-Laravel的專案模式

如果您是新使用者,建議您改用我的最新環境phpenv。https://github.com/DevinY/phpenv