Docker快速搭建一套PHP浇坐、Nginx、MySQL黔宛、Redis近刘、Xdebug、Memcached 開發(fā)環(huán)境并演進

采用docker-compose容器編排技術(shù)臀晃,一步啟動全部服務(wù)觉渴。php容器在官方的基礎(chǔ)上還打包了一些常用拓展(附帶build源碼,動手能力強可以自己打包)徽惋,php案淋,nginx,mysql都附帶有自定義配置文件(便于開發(fā)測試的配置調(diào)整)寂曹,都供下載

架構(gòu)

本片文章搭建出來的環(huán)境如上圖哎迄。


環(huán)境說明

運行環(huán)境

Mac OS 10.13.6

Virtual Box 5.2.14

Ubuntu 16.04.4

Docker 17.07.0-ce

容器

Nginx 1.12.1-alpine

PHP-fpm 5.6

MySQL 5.7

Redis 3.2

Memcached 1.4.27

這里說明一下筆者運行環(huán)境,采用了在Mac機上安裝vbox虛擬機隆圆,在虛擬機里面的debian環(huán)境安裝了Docker環(huán)境漱挚,文件放在Mac環(huán)境,通過文件掛載方式渺氧,達到Mac環(huán)境編輯旨涝,Docker環(huán)境實時更新效果。你要問為啥不在Mac下直接裝Docker侣背,歷史原因~

運行材料

.

├── build? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## docker 鏡像build 材料

│?? ├── php5.6? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## php 5.6

│?? │?? ├── Dockerfile

│?? │?? ├── imagick-3.4.3.tgz

│?? │?? ├── memcached-2.2.0.tgz

│?? │?? ├── redis-4.0.2.tgz

│?? │?? ├── sources.list

│?? │?? └── xdebug-XDEBUG_2_5_5.tar.gz

│?? └── php-cli? ? ? ? ? ? ? ? ? ? ? ? ? ? ## php cli 的自建鏡像

│??? ? ├── amqp-1.9.3.tgz

│??? ? ├── Dockerfile

│??? ? ├── Dockerfile-php-swoole

│??? ? ├── memcached-3.0.4.tgz

│??? ? ├── redis-4.1.1.tgz

│??? ? ├── sources.list.jessie

│??? ? ├── swoole-4.0.4.tgz

│??? ? ├── swoole-4.2.6.tgz

│??? ? ├── xdebug-2.6.1.tgz

│??? ? └── yaf-3.0.7.tgz

├── config? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## 配置文件

│? ├── apt? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## 由于使用的debian系列白华,所以命名apt

│? │? └── sources.list? ? ? ? ? ? ? ? ? ? ## 更新為國內(nèi)源

│? ├── memcached? ? ? ? ? ? ? ? ? ? ? ? ? ## memchached的配置

│? │? └── memcached.conf

│? ├── mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ## mysql 的配置

│?? │?? ├── conf.d

│?? │?? │?? └── mysqld_safe_syslog.cnf

│?? │?? └── my.cnf

│? ├── nginx? ? ? ? ? ? ? ? ? ? ? ? ? ? ## nginx 的配置

│?? │?? ├── conf.d

│?? │?? │?? ├── default

│?? │?? │?? └── xiuno

│?? │?? ├── mime.types

│?? │?? ├── nginx.conf

│?? │?? └── sites-enabled

│? ├── php? ? ? ? ? ? ? ? ? ? ? ? ? ? ## php的配置,分cli贩耐,和fpm配置

│?? │?? ├── cli

│?? │?? │?? ├── conf.d

│?? │?? │?? │?? ├── 05-opcache.ini

│?? │?? │?? │?? ├── 10-pdo.ini

│?? │?? │?? │?? ├── 20-curl.ini

│?? │?? │?? │?? ├── 20-gd.ini

│?? │?? │?? │?? ├── 20-imagick.ini

│?? │?? │?? │?? ├── 20-json.ini

│?? │?? │?? │?? ├── 20-memcache.ini

│?? │?? │?? │?? ├── 20-mysqli.ini

│?? │?? │?? │?? ├── 20-mysql.ini

│?? │?? │?? │?? ├── 20-pdo_mysql.ini

│?? │?? │?? │?? ├── 20-readline.ini

│?? │?? │?? │?? ├── 20-redis.ini

│?? │?? │?? │?? ├── 20-xdebug.ini

│?? │?? │?? │?? └── swoole.ini

│?? │?? │?? └── php.ini

│?? │?? ├── fpm

│?? │?? │?? ├── conf.d

│?? │?? │?? │?? ├── docker.conf

│?? │?? │?? │?? ├── www.conf

│?? │?? │?? │?? └── zz-docker.conf

│?? │?? │?? ├── docker-php-fpm.conf

│?? │?? │?? ├── php-fpm.conf

│?? │?? │?? ├── php.ini

│?? │?? │?? └── pool.d

│?? │?? │??? ? └── www.conf

│?? │?? └── mods-available

│?? │??? ? ├── curl.ini

│?? │??? ? ├── gd.ini

│?? │??? ? ├── imagick.ini

│?? │??? ? ├── json.ini

│?? │??? ? ├── memcache.ini

│?? │??? ? ├── mysqli.ini

│?? │??? ? ├── mysql.ini

│?? │??? ? ├── opcache.ini

│?? │??? ? ├── pdo.ini

│?? │??? ? ├── pdo_mysql.ini

│?? │??? ? ├── readline.ini

│?? │??? ? ├── redis.ini

│?? │??? ? └── xdebug.ini

│? └── redis? ? ? ? ? ? ? ? ? ? ? ? ? ? ## redis 配置

│??? ? ├── redis.conf

│??? ? ├── redis-server.sh

│??? ? └── sentinel.conf

├── data? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## 為了數(shù)據(jù)持久化

│? ├── mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ## mysql 文件掛載

│? └── redis? ? ? ? ? ? ? ? ? ? ? ? ? ? ## redis 持久化數(shù)據(jù)文件夾

├── docker-compose.yaml? ? ? ? ? ? ? ? ## 容器編排 ;⌒取!潮太!

├── log? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## 各個容器產(chǎn)生的日志

│? ├── mysql? ? ? ? ? ? ? ? ? ? ? ? ? ? ## mysql日志

│? │? ├── error.log

│? │? └── mysql.log

│? ├── nginx? ? ? ? ? ? ? ? ? ? ? ? ? ? ## nginx 日志

│?? │?? ├── access.log

│?? │?? ├── access_xiuno.log

│?? │?? ├── error.log

│?? │?? └── error_xiuno.log

│?? └── php

├── php? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## php代碼存放目錄

│? └── xiunobbs? ? ? ? ? ? ? ? ? ? ? ? ? ? ## php項目

└── tool? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ## php 一些工具

? ? ├── composer.phar

? ? └── phpunit-4.8.36.phar

配置文件下載

git clone?https://gitee.com/xupaul/docker_fast_init

配置說明

目前筆者還沒有寫相關(guān)自動化腳本自動適配用戶的使用環(huán)境管搪,所以這里需要先調(diào)整一下下載后的配置文件虾攻。

docker-compose.yml 文件調(diào)整

這個文件有大量的文件掛載配置,這塊就需要調(diào)整更鲁,拿一個舉例霎箍。

version:"2"services:? ? http:? ? ? ? image:nginx:1.12.1-alpine? ? ? ? volumes:- ~/config/nginx/nginx.conf:/etc/nginx/nginx.conf:rw? ? ? ? ports:-"8080:80"? ? ? ? environment:TZ :"Asia/Shanghai"? ? ? ? networks:? ? ? ? ? ? tasker_net:? ? ? ? ? ? ? ? ipv4_address:"192.63.0.11"

在例子中最后volumes的下一行,是將宿主機的nginx.conf配置文件掛載并覆蓋容器內(nèi)的nginx.conf文件澡为,~/文件路徑就是clone git項目后的目錄直接替換即可漂坏。

如果你也使用了虛擬機,那么你需要~/要替換為docker的運行環(huán)境的路徑媒至!

在ports這里顶别,http服務(wù)為了不和本機的80端口沖突,以及sudo權(quán)限才能申請的小于1024的端口塘慕,這里我以8080作為默認值筋夏。其他容器的端口配置也遵循以上的規(guī)則,為的是能一個命令就能啟動起來图呢。

為每個容器都配置了時區(qū)。

網(wǎng)絡(luò)ip這部分骗随,為了便于配置就手動分配ip了蛤织。

Nginx 配置

配置好了php-fpm之間tcp通訊,以及php路由的rewrite鸿染。配置了靜態(tài)資源緩存指蚜。

MySQL 配置

額外配置了一般性的查詢?nèi)罩荆阌赿ebug程序涨椒。

PHP 配置

? ? php:? ? ? ? image:paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2? ? ? ? volumes:- ~/config/php/cli/php.ini:/usr/local/etc/php/php.ini/:rw? ? ? ? ports:-"9000"? ? ? ? environment:? ? ? ? ? ? PHP_IDE_CONFIG:"serverName=bs"? ? ? ? ? ? XDEBUG_CONFIG:"remote_host=10.0.2.2 remote_port=9000"

我為php一起打包了一些常用拓展摊鸡,其中xdebug需要調(diào)整一下remote_host的的ip(docker-compose.yaml, ~/config/php/cli/20-xdebug.ini 兩個文件內(nèi)的都需要調(diào)整).?server_name?需要結(jié)合開發(fā)IDE一起調(diào)整,如PHPStorm里Preferences | Languages & Frameworks | PHP | Servers配置路徑下有什么可用的記錄蚕冬,那么這里填什么免猾。

Redis 配置

沒有特殊配置

Memecached 配置

沒有特殊配置

鏡像構(gòu)建

php鏡像

可以通過如下命令拉取:

docker pull paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2

或者在到?~/build/php5.6?下自行打包:

docker build -t paulxu/php:5.6-fpm-jessis-pdo-xdebug-mysqli-gd-mb-zip-2 -f dockerfile .

如果自定義tag name囤热,需要一并調(diào)整docker-compose.yml

啟動

從gitee下載配置

根據(jù)自己的環(huán)境調(diào)整配置

準備好鏡像

啟動

啟動命令

## 當(dāng)前線程運行猎提,要停止時,鍵入`Ctrl+C`docker-comose -f ./docker-compose.yaml up## 后臺運行docker-comose -f ./docker-compose.yaml up -d

摧毀

docker-comose -f ./docker-compose.yaml down

常見問題

MySQL 掛載的配置文件被忽略旁蔼,不起作用

MySQL 要求配置文件的權(quán)限為只能讀锨苏,你需要已只讀方式掛載

不知道remote_host怎么辦

禁用xdebug,搭建好環(huán)境并啟動棺聊,在IDE運行的環(huán)境(因為xdebug需要和IDE通訊)訪問以http(在瀏覽器訪問伞租,注意端口映射)的方式訪問php容器內(nèi)代碼,在Nginx的access.log里查看訪問的ip就是remote_host.

docker build 時報錯導(dǎo)致打包鏡像失敗

遇到這種情況限佩,如果時一些不要緊的報錯葵诈,可以選擇忽略他們。可以在命令后面追加?exit 0?來屏蔽錯誤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驯击,一起剝皮案震驚了整個濱河市烁兰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌徊都,老刑警劉巖沪斟,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異暇矫,居然都是意外死亡主之,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門李根,熙熙樓的掌柜王于貴愁眉苦臉地迎上來槽奕,“玉大人,你說我怎么就攤上這事房轿≡猎埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵囱持,是天一觀的道長夯接。 經(jīng)常有香客問我,道長纷妆,這世上最難降的妖魔是什么盔几? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮掩幢,結(jié)果婚禮上逊拍,老公的妹妹穿的比我還像新娘。我一直安慰自己际邻,他們只是感情好芯丧,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枯怖,像睡著了一般注整。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上度硝,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天肿轨,我揣著相機與錄音,去河邊找鬼蕊程。 笑死椒袍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的藻茂。 我是一名探鬼主播驹暑,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼玫恳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了优俘?” 一聲冷哼從身側(cè)響起京办,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帆焕,沒想到半個月后惭婿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡叶雹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年财饥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片折晦。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡钥星,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出满着,到底是詐尸還是另有隱情谦炒,我是刑警寧澤,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布风喇,位于F島的核電站编饺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏响驴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一撕蔼、第九天 我趴在偏房一處隱蔽的房頂上張望豁鲤。 院中可真熱鬧,春花似錦鲸沮、人聲如沸琳骡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽楣号。三九已至,卻和暖如春怒坯,著一層夾襖步出監(jiān)牢的瞬間炫狱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工剔猿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留视译,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓归敬,卻偏偏與公主長得像酷含,于是被迫代替她去往敵國和親鄙早。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容