『壹』 如何使用Docker部署php開發環境
把nginx、php都安裝在同一個容器,為了擴展方便,我們希望nginx容器和php容器分開。那麼就可以使用docker link命令實現這一目的。
『貳』 自己私下寫php項目怎麼用docker
首先還是從一個PHP在Docker容器下的Hello World實例開始。我們准備這樣一個PHP文件index.php
<?php
echo"PHPinDocker";
然後在同目錄下創建文本文件並命名為Dockerfile,內容為:
#從官方PHP鏡像構建
FROMphp
#將index.php復制到容器內的/var/www目錄下
ADDindex.php/var/www/
#對外暴露8080埠
EXPOSE8080
#設置容器默認工作目錄為/var/www
WORKDIR/var/www/
#容器運行後默認執行的指令
ENTRYPOINT["php","-S","0.0.0.0:8080"]
構建這個容器:
dockerbuild-tallovince/php-helloworld.
運行這個容器
dockerrun-d-p8080:8080allovince/php-helloworld
查看結果:
curllocalhost:8080
PHPinDocker
這樣我們就創建了一個用於演示PHP程序的Docker容器,任何安裝過Docker的機器都可以運行這個容器獲得同樣的結果。而任何有上面的php文件和Dockerfile的人都可以構建出相同的容器,從而完全消除了不同環境,不同版本可能引起的各種問題。
想像一下程序進一步復雜,我們應該如何擴展呢,很直接的想法是繼續在容器內安裝其他用到的服務,並將所有服務運行起來,那麼我們的Dockerfile很可能發展成這個樣子:
FROMphp
ADDindex.php/var/www/
#安裝更多服務
RUNapt-get
install-y
mysql-server
nginx
php5-fpm
php5-mysql
#編寫一個啟動腳本啟動所有服務ENTRYPOINT
["/opt/bin/php-nginx-mysql-start.sh"]
雖然我們通過Docker構建了一個開發環境,但覺不覺得有些似曾相識呢。沒錯,其實這種做法和製作一個虛擬機鏡像是差不多的
『叄』 如何 在Docker窗口中部署PHP開發環境
環境部署一直是一個很大的問題,無論是開發環境還是生產環境,但是 Docker
將開發環境和生產環境以輕量級方式打包,提供了一致的環境。極大的提升了開發部署一致性。當然,實際情況並沒有這么簡單,因為生產環境和開發環境的配置是完全不同的,比如日誌等的問題都需要單獨配置,但是至少比以前更加簡單方便了,這里以
PHP 開發作為例子講解 Docker 如何布置開發環境。
一般來說,一個 PHP 項目會需要以下工具:
Web 伺服器: Nginx/Tengine
Web 程序: PHP-FPM
資料庫: MySQL/PostgreSQL
緩存服務: Redis/Memcache
這是最簡單的架構方式,在 Docker 發展早期,Docker 被大量的濫用,比如,一個鏡像內啟動多服務,日誌收集依舊是按照 Syslog
或者別的老方式,鏡像容量非常龐大,基礎鏡像就能達到 80M,這和 Docker 當初提出的思想完全南轅北轍了,而 Alpine linux
發行版作為一個輕量級 Linux 環境,就非常適合作為 Docker 基礎鏡像,Docker 官方也推薦使用 Alpine 而不是 Debian
你可以去後盾人平台看看,裡面的東西不錯
『肆』 如何使用docker中的php環境來調試代碼
Docker容器化PHP開發環境搭建-DVWA (含xdebug調試)
摘要:Docker容器化技術在過去的2015年得到了大面積的普及應用,特別是以靈雀雲、數人雲、阿里雲以及阿里百川TAE2.0等為代表的服務商的推動,可以預見2016會是雲服務大爆發的一年,會有越來越多的互聯網企業將自己的業務部署到基於Docker容器的環境里來。
Docker容器化技術在過去的2015年得到了大面積的普及應用,特別是以靈雀雲、數人雲、阿里雲以及阿里百川TAE2.0等為代表的服務商的推動,可以預見2016會是雲服務大爆發的一年,會有越來越多的互聯網企業將自己的業務部署到基於Docker容器的環境里來。
本文以 DVWA 部署為例,來講解PHP環境部署+基於XDEBUG調試環境的容器化解決方案。
Github代碼
segmentfault參考鏈接
Docker容器化PHP開發環境搭建-DVWA (含xdebug調試)
創建目錄
基礎目錄
~/dvwa/data 存放MySQL資料庫
~/dvwa/htdocs 項目代碼
~/dvwa/log 存放所有輸出log
從代碼倉庫構建
cd ~
git clone https://github.com/MarkThink/DockerPHP.git dvwa
創建這些目錄
mkdir ~/dvwa ~/dvwa/data ~/dvwa/data/mysql ~/dvwa/log ~/dvwa/log/nginx ~/dvwa/log/php ~/dvwa/htdocs
下載鏡像及構建
cd ~/dvwa/htdocs/dvawfiles
make pull
make dl
make build
下載代碼
cd ~/dvwa/htdocs
git clone https://github.com/MarkThink/DVWA.git dvwa_app
IDE調試配置
Docker容器化PHP開發環境搭建-DVWA (含xdebug調試)Docker容器化PHP開發環境搭建-DVWA (含xdebug調試)
綁定域名
```
sudo vi /etc/hosts
192.168.99.100
『伍』 怎麼使用Docker搭建PHP開發環境
在Docker流行之前,要搭建開發環境通常有兩種選擇:一種是使用wamp、xampp、mamp等集成開發環境安裝包,另外一種就是使用普通虛擬機來安裝linux伺服器,然後通過下載一鍵安裝包(如:lnmp)或者逐個安裝做需要的軟體。前者雖然簡單,但太不靈活,想要安裝額外的軟體或者版本會很麻煩或者乾脆不知道如何下手;後者除了費時費力,佔用本機資源過多,可能會導致系統運行緩慢,而且如果你忘了及時生成快照,一旦失誤,追悔莫及。
幸好,Docker來了!它簡單易用,靈活多變,方便迅捷,掃除了以上種種弊端。如果你想稍微詳細的認識下這位虛擬化界的明星,傳送門( 快速理解Docker )。
安裝Docker
平時開發的環境一般都是Mac或者windows,Linux暫時沒有研究,所以接下來只針對前兩者寫下步驟,這兩個平台,官方都推薦了兩種安裝方式:app和工具包(toolbox)。註:app方式對系統版本和配置會有一定要求,而且Windows需要你安裝微軟虛擬化產品Hyper-V,具體見app鏈接頁面。
APP
https://docs.docker.com/docke...
https://docs.docker.com/docke...
工具包
https://www.docker.com/proc...
以上方式本質上都會在你的系統中安裝docker-engine、docker-machine、docker-compose和VirtualBox(除了Windows的app方式)。因為docker高度依賴linux內核提供的cgroup,namespace 等特性和介面,所以mac和windows平台需要使用docker-machine和虛擬機在後台創建運行一個linux內核。
而我的安裝方式就是直接在 Mac 上使用brew,如果你未曾安裝brew,則在終端執行以下代碼:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝docker所需要的包:
brew install docker docker-machine docker-compose virtualbox
創建一個do
『陸』 docker php 鏡像怎麼配置
1.選擇 Ubuntu 官方的 14.04 版本為我們依賴的系統鏡像。
dockerfile
FROM ubuntu:trusty
2.因所有官方鏡像均位於境外伺服器,為了確保所有示例能正常運行,DaoCloud 提供了一套境內鏡像源,並與官方源保持同步。如果使用 DaoCloud 的鏡像源,則指向:FROM cloud.io/ubuntu:trusty
3.設置鏡像的維護者,相當於鏡像的作者或發行方。
dockerfile
MAINTAINER Captain Dao <[email protected]>
4.用 RUN 命令調用 apt-get 包管理器安裝 PHP 環境所依賴的程序包。
安裝依賴包相對比較固定,因此該動作應該盡量提前,這樣做有助於提高鏡像層的復用率。
『柒』 如何製作一個定製的 PHP 基礎 Docker 鏡像
選擇 Ubuntu 官方的 14.04 版本為我們依賴的系統鏡像。
dockerfile
FROM ubuntu:trusty
因所有官方鏡像均位於境外伺服器,為了確保所有示例能正常運行,DaoCloud 提供了一套境內鏡像源,並與官方源保持同步。如果使用 DaoCloud 的鏡像源,則指向:FROM cloud.io/ubuntu:trusty
設置鏡像的維護者,相當於鏡像的作者或發行方。
dockerfile
MAINTAINER Captain Dao <[email protected]>
用 RUN 命令調用 apt-get 包管理器安裝 PHP 環境所依賴的程序包。
安裝依賴包相對比較固定,因此該動作應該盡量提前,這樣做有助於提高鏡像層的復用率。
dockerfile
RUN apt-get update \
&& apt-get -y install \
curl \
wget \
apache2 \
libapache2-mod-php5 \
php5-mysql \
php5-sqlite \
php5-gd \
php5-curl \
php-pear \
php-apc \
用 RUN 命令調用 Linux 命令對 Apache 服務和 PHP 參數進行配置。
dockerfile
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \
用 RUN 命令調用 mkdir 來准備一個干凈的放置代碼的目錄。
dockerfile
RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html
將本地的代碼添加到目錄,並指定其為當前的工作目錄。
dockerfile
COPY . /app
WORKDIR /app
設置啟動腳本的許可權,指定暴露的容器內埠地址。
最後指定容器啟動的進程。
dockerfile
RUN chmod 755 ./start.sh
EXPOSE 80
CMD ["./start.sh"]
至此一個 PHP 的基礎鏡像製作完畢,你可以在本地運行 docker build -t my-php-base . 來構建出這個鏡像並命名為 my-php-base 。
由於網路環境的特殊情況,在本地運行 docker build 的時間會很長,並且有可能失敗。推薦使用 DaoCloud 加速器 和 DaoCloud 的雲端 代碼構建 功能。
完整 Dockerfile
``` dockerfile
Ubuntu 14.04,Trusty Tahr(可靠的塔爾羊)發行版
FROM ubuntu:trusty
道客船長榮譽出品
MAINTAINER Captain Dao < [email protected] >
APT 自動安裝 PHP 相關的依賴包,如需其他依賴包在此添加
RUN apt-get update \
&& apt-get -y install \
curl \
wget \
apache2 \
libapache2-mod-php5 \
php5-mysql \
php5-sqlite \
php5-gd \
php5-curl \
php-pear \
php-apc \
# 用完包管理器後安排打掃衛生可以顯著的減少鏡像大小
&& apt-get clean \
&& apt-get autoclean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
# 安裝 Composer,此物是 PHP 用來管理依賴關系的工具
# Laravel Symfony 等時髦的框架會依賴它
&& curl -sS https://getcomposer.org/installer \
| php -- --install-dir=/usr/local/bin --filename=composer
Apache 2 配置文件:/etc/apache2/apache2.conf
給 Apache 2 設置一個默認服務名,避免啟動時給個提示讓人緊張.
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \
# PHP 配置文件:/etc/php5/apache2/php.ini
# 調整 PHP 處理 Request 里變數提交值的順序,解析順序從左到右,後解析新值覆蓋舊值
# 默認設定為 EGPCS(ENV/GET/POST/COOKIE/SERVER)
&& sed -i 's/variables_order.*/variables_order = "EGPCS"/g' \
/etc/php5/apache2/php.ini
配置默認放置 App 的目錄
RUN mkdir -p /app && rm -rf /var/www/html && ln -s /app /var/www/html
COPY . /app
WORKDIR /app
RUN chmod 755 ./start.sh
EXPOSE 80
CMD ["./start.sh"]
『捌』 怎麼樣使用Docker部署一個PHP開發環境
安裝Docker
平時開發的環境一般都是Mac或者Windows,所以接下來只針對前兩者寫下步驟,這兩個平台,官方都推薦了兩種安裝方式:app和工具包(toolbox)。註:app方式對系統版本和配置會有一定要求,Mac版本會自動為你安裝好VM(虛擬機),但Windows需要你安裝微軟虛擬化產品Hyper-V,而toolbox方式則需要你額外安裝virtualbox來作為docker的VM。
『玖』 怎麼使用Docker搭建PHP開發環境
在Docker流行之前,要搭建開發環境通常有兩種選擇:一種是使用wamp、xampp、mamp等集成開發環境安裝包,另外一種就是使用普通虛擬機來安裝linux伺服器,然後通過下載一鍵安裝包(如:lnmp)或者逐個安裝做需要的軟體。前者雖然簡單,但太不靈活,想要安裝額外的軟體或者版本會很麻煩或者乾脆不知道如何下手;後者除了費時費力,佔用本機資源過多,可能會導致系統運行緩慢,而且如果你忘了及時生成快照,一旦失誤,追悔莫及。
幸好,Docker來了!它簡單易用,靈活多變,方便迅捷,掃除了以上種種弊端。如果你想稍微詳細的認識下這位虛擬化界的明星,傳送門( 快速理解Docker )。
安裝Docker
平時開發的環境一般都是Mac或者windows,Linux暫時沒有研究,所以接下來只針對前兩者寫下步驟,這兩個平台,官方都推薦了兩種安裝方式:app和工具包(toolbox)。註:app方式對系統版本和配置會有一定要求,而且Windows需要你安裝微軟虛擬化產品Hyper-V,具體見app鏈接頁面。
APP
https://docs.docker.com/docke...
https://docs.docker.com/docke...
工具包
https://www.docker.com/proc...
以上方式本質上都會在你的系統中安裝docker-engine、docker-machine、docker-compose和VirtualBox(除了Windows的app方式)。因為docker高度依賴linux內核提供的cgroup,namespace 等特性和介面,所以mac和windows平台需要使用docker-machine和虛擬機在後台創建運行一個linux內核。
而我的安裝方式就是直接在 Mac 上使用brew,如果你未曾安裝brew,則在終端執行以下代碼:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝docker所需要的包:
brew install docker docker-machine docker-compose virtualbox
創建一個docker-machine:
docker-machine create -d virtualbox default
註:-d 指定使用virtualbox來創建default 為machine名稱
告訴主機如何找到docker-machine:
echo $(docker-machine env ) >> .zshrc
註:這里的.zshrc是我的用戶配置文件,如果你用bash,可以改為.bash_profile。
啟動docker-machine:
docker-machine start default Compose你的應用
docker-compose是用於定義和運行復雜Docker應用的工具。你可以在docker-compose.yml文件中定義一個多容器的應用,然後使用一條命令來啟動,然後所有預先定義好的操作都會被自動完成。
為了不重復造輪子,直接使用github上的第三方包。當然你也可以親自構建每一個你所需要的容器鏡像,然後用docker-compose.yml將所有容器組織起來運行,但這需要你具備一定的linux基礎和docker的運行機制和相關語法。
本人正在學習 laradock 這個基於Docker的開發環境包,然後根據自己的需要刪除了一些我認為不常用的部分、修改了部分配置以及增加了Elasticsearch容器,最終新開了自己的倉庫 DevDock 。當然,也推薦使用laradock。
我的倉庫目前支持的容器組合:
nginx , php-fpm , mysql , redis , mongo , apache2 , memcached , elasticsearch , workspace .
註:workspace和php-fpm一般會被其他容器所依賴,所以會自動運行,啟動時不必指定。
進入到你的應用的上級目錄:
git clone https://github.com/RystLee/DevDock.git
修改hosts
如果直接安裝啟動,是可以通過Docker IP : 192.168.99.100,就能直接訪問nginx的,但一般而言為了方便記憶,我們會去修改hosts文件,增加一條:
192.168.99.100 laravel.dev
修改你的nginx中的站點配置文件:
在DevDock目錄下找到nginx,修改sites目錄下的站點配置文件,通過修改本地的hosts來自定義域名,並在nginx容器中的sites文件夾下,修改相應的域名映射。
server_name laravel.dev
安裝啟動應用
cd DevDock docker-compose up -d nginx mysql ... # 後面跟上你想使用的容器即可
然後,耐心地等待開發環境自動搭建完成即可,如果中途出現錯誤,一般是因為GFW,網路會不太通暢,重新執行一兩次就好,完成之後,打開瀏覽器,訪問: http://laravel.dev 即可。