Docker安裝PHP+MySQL+Nginx環(huán)境(macOS M1 Pro )

1. 安裝Docker

下載地址:https://www.docker.com/get-started
下載適合M1芯片的Docker桌面程序,安裝

下載

Docker頁(yè)面

Docker官方維護(hù)了一個(gè)公共倉(cāng)庫(kù)Docker Hub,其中已經(jīng)包括了數(shù)量上百萬(wàn)的鏡像配椭,大部分需求都可以通過(guò)在Docker Hub 中直接下載鏡像來(lái)實(shí)現(xiàn)敦姻。
接下來(lái)我們?nèi)ocker Hub上找到我們需要用到的程序(交互和Github非常相似)
了解Docker:菜鳥教程https://www.runoob.com/docker/docker-tutorial.htmlc

2. 安裝MySQL

(1)下載鏡像镰惦,注意因?yàn)槭荕1芯片茵瘾,需要增加--platform linux/x86_64祈惶,不然會(huì)報(bào)錯(cuò)如下:

docker pull mysql:5.7.36

報(bào)錯(cuò)信息如下:
5.7.36: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries

所以我們重新執(zhí)行docker pull mysql:5.7.36 --platform linux/x86_64

docker pull mysql:5.7.36 --platform linux/x86_64

5.7.36: Pulling from library/mysql
ffbb094f4f9e: Pull complete 
...
6c1cb25f7525: Pull complete 
Digest: sha256:d1cc87a3bd5dc07defc837bc9084f748a130606ff41923f46dec1986e0dc828d
Status: Downloaded newer image for mysql:5.7.36
docker.io/library/mysql:5.7.36

(2) 創(chuàng)建一個(gè)自定義配置路徑

mkdir -p ~/dockerconf/mysql

(3)運(yùn)行一個(gè)MySQL實(shí)例:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag棒搜,其中some-mysql讹蘑,您要分配給容器的名稱my-secret-pw是要為 MySQL 根用戶設(shè)置的密碼座慰,是tag指定所需 MySQL 版本的標(biāo)簽误墓,按照說(shuō)明我們啟動(dòng)一個(gè)mysql實(shí)例:

docker run --name mysql5.7 -v ~/dockerconf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.36

注意:-v ~/dockerconf/mysql:/etc/mysql/conf.d是使用你的宿主機(jī)自定義配置文件的路徑和名稱,/etc/mysql/conf.d是原默認(rèn)配置路徑恼琼。

3. 安裝Nginx

(1):下載鏡像docker pull nginx蛙卤,默認(rèn)最新的版本

docker pull nginx

(2)創(chuàng)建Nginx的配置目錄乐严、日志目錄、訪問(wèn)根目錄

mkdir -p ~/dockerconf/nginx/conf ~/dockerconf/nginx/logs ~/dockerconf/nginx/www

(3)先啟動(dòng)一個(gè)實(shí)例(方便docker cp 文件到宿主機(jī)):

docker run --name nginx -p 80:80 -d nginx

(3)從容器內(nèi)復(fù)制配置文件到宿主機(jī)占婉,經(jīng)配置文件映射到容器內(nèi)對(duì)應(yīng)的目錄中

docker cp nginx:/etc/nginx/conf.d/default.conf ~/dockerconf/nginx/conf/default.conf

(4)#移除之前創(chuàng)建的容器简僧,重新啟動(dòng)Nginx實(shí)例岛马,-p 為容器和宿主機(jī)創(chuàng)建端口映射夏志,這樣本地瀏覽器可以localhost訪問(wèn)80端口了

#移除之前創(chuàng)建的容器:
docker stop nginx && docker rm nginx
#重新運(yùn)行實(shí)例
docker run --name nginx -p 80:80 -v ~/dockerconf/nginx/conf:/etc/nginx/conf.d -v ~/dockerconf/nginx/www:/usr/share/nginx/html -v ~/dockerconf/nginx/logs:/var/log/nginx -d nginx
4. 安裝PHP

(1)找到對(duì)應(yīng)版本鏡像下載docker pull php:7.2.34,我們用7.2的版本

docker pull php:7.2.34-fpm

(2)運(yùn)行PHP實(shí)例

docker run --name php7.2 -p 9000:9000 -d php:7.2.34-fpm

(3)創(chuàng)建PHP的配置目錄、日志目錄

mkdir -p ~/dockerconf/php/conf ~/dockerconf/php/logs

(4)從容器中復(fù)制配置文件

docker cp php7.2:/usr/local/etc/php-fpm.d/www.conf ~/dockerconf/php/conf/www.conf
docker cp php7.2:/usr/local/etc/php/php.ini-production ~/dockerconf/php/conf/php.ini

(5)移除實(shí)例甥捺,重新運(yùn)行實(shí)例皿曲,1.聯(lián)通PHP和Nginx兩個(gè)容器劫樟;2.映射目錄吃粒;

#移除之前創(chuàng)建的容器:
docker stop php7.2 && docker rm php7.2
#重新運(yùn)行實(shí)例
docker run --name php7.2 -p 9000:9000 --link nginx:nginx -v ~/dockerconf/nginx/www:/var/www/html -v ~/dockerconf/php/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf -v ~/dockerconf/php/conf/php.ini:/usr/local/etc/php/php.ini -d php:7.2.34-fpm
5. 總結(jié)

(1)常用docker命令參數(shù)

run:創(chuàng)建一個(gè)新的容器
-i 表示允許我們對(duì)容器進(jìn)行操作
-t 表示在新容器內(nèi)指定一個(gè)為終端
-d 表示容器在后臺(tái)執(zhí)行
/bin/bash 這將在容器內(nèi)啟動(dòng)bash shell
-p 為容器和宿主機(jī)創(chuàng)建端口映射
--name 為容器指定一個(gè)名字
-v 將容器內(nèi)路徑掛載到宿主機(jī)路徑
--privileged=true 給容器特權(quán),在掛載目錄后容器可以訪問(wèn)目錄以下的文件或者目錄
--link可以用來(lái)鏈接2個(gè)容器扎酷,使得源容器(被鏈接的容器)和接收容器(主動(dòng)去鏈接的容器)之間可以互相通信,解除了容器之間通信對(duì)容器IP的依賴`--link <name or id>:alias` : name和id是源容器的name和id,alias是源容器在link下的別名

(2)在宿主機(jī)想通過(guò)瀏覽器訪問(wèn)Nginx容器下的端口,必須通過(guò)-p 8081:8081做端口映射(例如:端口8081)帝蒿,否則無(wú)法通過(guò)localhost:8081訪問(wèn)端口
(3)進(jìn)入容器(進(jìn)入Nginx/MySQL/PHP各自的容器):
docker exec -it <容器名> bash進(jìn)入容器終端并且的保留為容器終端的輸入形式(-it和bash的結(jié)合作用)

官方解釋:

       exec:                                     Run a command in a running container(在運(yùn)行的容器中運(yùn)行命令)
       exec -i:  --interactive(相互作用的)       Keep STDIN open even if not attached(即使沒(méi)有連接荐糜,也要保持STDIN打開)
       exec -t:   --tty                          Allocate a pseudo-TTY(分配一個(gè) 冒充的終端設(shè)備)

參考資料:
https://gitee.com/phprao/dnmp2
https://www.cnblogs.com/xingxia/p/docker_php.html
https://gitee.com/hyperions/docker-php

https://hub.docker.com/r/2233466866/lnmp
//同事小吳的記錄
https://www.yuque.com/docs/share/1ec0b921-10dd-4b53-8bd9-26f3e872e3da?#(密碼:impc) 《Docker筆記》
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市葛超,隨后出現(xiàn)的幾起案子暴氏,更是在濱河造成了極大的恐慌,老刑警劉巖绣张,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件答渔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡侥涵,警方通過(guò)查閱死者的電腦和手機(jī)沼撕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宋雏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人务豺,你說(shuō)我怎么就攤上這事好芭。” “怎么了冲呢?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵舍败,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我敬拓,道長(zhǎng)邻薯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任乘凸,我火速辦了婚禮厕诡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘营勤。我一直安慰自己灵嫌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布葛作。 她就那樣靜靜地躺著寿羞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赂蠢。 梳的紋絲不亂的頭發(fā)上绪穆,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音虱岂,去河邊找鬼玖院。 笑死,一個(gè)胖子當(dāng)著我的面吹牛第岖,可吹牛的內(nèi)容都是我干的难菌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蔑滓,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼郊酒!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起烫饼,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤猎塞,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后杠纵,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荠耽,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年比藻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铝量。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倘屹。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖慢叨,靈堂內(nèi)的尸體忽然破棺而出纽匙,到底是詐尸還是另有隱情,我是刑警寧澤拍谐,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布烛缔,位于F島的核電站,受9級(jí)特大地震影響轩拨,放射性物質(zhì)發(fā)生泄漏践瓷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一亡蓉、第九天 我趴在偏房一處隱蔽的房頂上張望晕翠。 院中可真熱鬧,春花似錦砍濒、人聲如沸淋肾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)樊卓。三九已至,卻和暖如春甲棍,著一層夾襖步出監(jiān)牢的瞬間简识,已是汗流浹背赶掖。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工感猛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奢赂。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓陪白,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親膳灶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咱士,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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