用Docker建立php + Nginx 開發環境

Charlie | 查理
2 min readAug 11, 2020

Docker 練習筆記 vol.2

2019年4月,剛開始寫 blog 的時候,開了一篇關於docker 的文章,然後…就忘記接著寫了。趁最近協助新人建環境,順道補完一下。

這次要完成的事情很簡單,用 docker-compose 執行 php & nginx 兩個 container , nginx listen 80 port , request php script 時再透過 9000 port 轉給 php-fpm 處理,白話的說,就是在本機建立跑 php 的環境。

如同上篇說的,這次用 code 說話:

建立一些相關的檔案,結構如下:

.
├── app
│ └── index.php
├── docker-compose.yaml
├── nginx.conf
└── php
├── Dockerfile
└── php.ini

各支檔案的內容如下:

接下來,只要在目錄下執行 docker-compose up ,就可以在 http://localhost:80 看到你的服務,而且修改 app 內的檔案再重整,就可以直接看到改動的結果。

補充說明一下,在 docker-compose.yaml 的第11, 20行,可以注意到我們把包含 php 檔案的 app 目錄同時掛載到 php & nginx container 內,像我們組織常常一個專案需要同時掛載三四個 repositories ,就會有點麻煩。

當然有看過比較優雅的解法,但我認為這是另一個問題:「 nginx php 是否要拆成2個 container」的延伸,照 docker 的設計來說應該是 one service per container ,一個容器一個服務,但有時實務上會須要把他包裝成單一 container,我們的服務環境就因為某些原因是在alpine image 上安裝 nginx + php ,找資料時也有在 stack overflow 上看過其他人有類似的困擾。但如前一篇所述,這系列主要是架設開發環境用,所以就這樣吧。

--

--