MAC下docker搭建Nginx+PHP+MySQL

一些膨、docker安裝
1绒尊、macOS 我們可以使用 Homebrew 來(lái)安裝 Docker

$ brew cask install docker

==> Creating Caskroom at /usr/local/Caskroom
==> We'll set permissions properly so we won't need sudo in the future
Password:          # 輸入 macOS 密碼
==> Satisfying dependencies
==> Downloading https://download.docker.com/mac/stable/21090/Docker.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask docker
==> Installing Cask docker
==> Moving App 'Docker.app' to '/Applications/Docker.app'.

下載完成之后我們會(huì)發(fā)現(xiàn)應(yīng)用程序中多了一個(gè)docker的圖標(biāo)


docker

2五垮、從應(yīng)用中找到 Docker 圖標(biāo)并點(diǎn)擊運(yùn)行辛润”羯可能會(huì)詢問(wèn) macOS 的登陸密碼,輸入即可控乾。
注意:第一次打開(kāi)圖標(biāo)時(shí)會(huì)看到注冊(cè)docker賬號(hào)的頁(yè)面么介,這個(gè)可以跳過(guò)。

3蜕衡、查看是否安裝成功
啟動(dòng)終端后壤短,通過(guò)命令可以檢查安裝后的 Docker 版本。


image.png

二慨仿、Nginx的安裝
1久脯、拉取官方的鏡像


image.png

2、查看鏡像(docker images)


鏡像

等待下載完成后镰吆,我們就可以在本地鏡像列表里查到 REPOSITORY 為 nginx 的鏡像

3帘撰、運(yùn)行容器

$ docker run -p 8080:80 --name mynginx -v /jokki/docker/www:/www -v /jokki/docker/conf/nginx.conf:/etc/nginx/nginx.conf -v /jokki/docker/logs:/wwwlogs  -d nginx

命令說(shuō)明:
-p 8080:80 將容器的80端口映射到主機(jī)的8080端口
--name mynginx:將容器命名為mynginx
-v /jokki/docker/www:/www:將主機(jī)中當(dāng)前目錄下的www掛載到容器的/www
-v /jokki/docker/conf/nginx.conf:/etc/nginx/nginx.conf:將主機(jī)中當(dāng)前目錄下的nginx.conf掛載到容器的/etc/nginx/nginx.conf
-v /jokki/docker/logs:/wwwlogs:將主機(jī)中當(dāng)前目錄下的logs掛載到容器的/wwwlogs

4、查看容器情況(docker ps)


image.png

到此我們的nginx配置完成鼎姊,但是有一點(diǎn)必須注意骡和,就是nginx的配置文件相赁,如果配置有問(wèn)題,那么我們是無(wú)法訪問(wèn)nginx的慰于,附上我的配置及我遇到的問(wèn)題

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;

        location / {
            root    /www;
            index  index.php index.html index.htm;

            if (!-e $request_filename) { 
                rewrite  ^(.*)$  /index.php?s=/$1  last; 
                break;   
            }
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
            #root           /www;
            fastcgi_pass   172.17.0.3:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /www$fastcgi_script_name;
            include        fastcgi_params;
        }

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
    }
}

這里有兩個(gè)地方需要注意:
1钮科、server中的listen千萬(wàn)別填寫(xiě)成主機(jī)的端口,這里端口是docker中nginx的端口婆赠,也就是80绵脯,而不是自己所配置的8080
2、server中server_name我填寫(xiě)的是本機(jī)localhost休里,那么后面在安裝php訪問(wèn)項(xiàng)目的時(shí)候蛆挫,記住fastcgi_pass 這里地址要寫(xiě)成php的地址
因?yàn)榈刂穼?xiě)成localhost我們經(jīng)常會(huì)把docker中容器本身的ip和我們主機(jī)的ip混淆,為了避免這些麻煩妙黍,我們可以直接指定地址悴侵,如果172.168.9.144

ps:容器查看ip的方法
docker inspect 容器ID或容器名 |grep '"IPAddress"'
例:docker inspect mynginx
server {
        listen       80;
        server_name  172.168.9.144;
        #######################
        #######################
        location ~ \.php$ {
            #root           /www;
            fastcgi_pass   172.168.9.144:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME          /www/audit/public$fastcgi_script_name;
            include        fastcgi_params;
        }
}

三、Docker安裝PHP
1拭嫁、拉取官方的鏡像,標(biāo)簽為5.6-fpm


image.png

2可免、查看鏡像


image.png

3、運(yùn)行容器

$ docker run -p 9000:9000 --name  myphp-fpm -v /jokki/docker/www:/www -v /jokki/docker/conf:/usr/local/etc/php -v /jokki/docker/logs:/phplogs   -d php:5.6-fpm

命令說(shuō)明:
-p 9000:9000 :將容器的9000端口映射到主機(jī)的9000端口
--name myphp-fpm :將容器命名為myphp-fpm
-v /jokki/docker/www:/www :將主機(jī)中項(xiàng)目的目錄www掛載到容器的/www
-v /jokki/docker/conf:/usr/local/etc/php :將主機(jī)中當(dāng)前目錄下的conf目錄掛載到容器的/usr/local/etc/php
-v /jokki/docker/logs:/phplogs :將主機(jī)中當(dāng)前目錄下的logs目錄掛載到容器的/phplogs

4做粤、查看容器的啟動(dòng)情況


image.png

5浇借、運(yùn)行index.php文件


index文件

通過(guò)瀏覽器訪問(wèn)


phpinfo

四、Docker 安裝 MySQL
1怕品、拉取官方的鏡像,標(biāo)簽為5.6

$ docker pull mysql:5.6

2妇垢、查看鏡像


鏡像

3、運(yùn)行容器

docker run -p 3308:3306 --name mymysql -v /jokki/docker/conf:/etc/mysql/conf.d -v /jokki/docker/logs:/logs -v /jokki/docker/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6

命令說(shuō)明:
-p 3308:3306:將容器的 3306 端口映射到主機(jī)的 3308 端口肉康。
-v /jokki/docker/conf:/etc/mysql/conf.d:將主機(jī)當(dāng)前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf闯估。
-v /jokki/docker/logs:/logs:將主機(jī)當(dāng)前目錄下的 logs 目錄掛載到容器的 /logs。
-v /jokki/docker/data:/var/lib/mysql :將主機(jī)當(dāng)前目錄下的data目錄掛載到容器的 /var/lib/mysql 吼和。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼睬愤。

進(jìn)入mysql終端


image.png

此時(shí)mysql安裝成功,這里我們也可以通過(guò)navicat去連接數(shù)據(jù)庫(kù)纹安,這里就不展示。

到此砂豌,我們docker中nginx厢岂、php、mysql都安裝成功阳距,我們就可以在docker運(yùn)行我們的項(xiàng)目了塔粒,雖然安裝過(guò)程中遇到很多問(wèn)題,ip的問(wèn)題筐摘,配置的問(wèn)題卒茬,但是只要有顆愛(ài)學(xué)習(xí)的心船老,辦法總比困難多。

參考:
http://www.runoob.com/docker/docker-tutorial.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末圃酵,一起剝皮案震驚了整個(gè)濱河市柳畔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌郭赐,老刑警劉巖薪韩,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異捌锭,居然都是意外死亡俘陷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門(mén)观谦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拉盾,“玉大人,你說(shuō)我怎么就攤上這事豁状∽狡” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵替蔬,是天一觀的道長(zhǎng)告私。 經(jīng)常有香客問(wèn)我,道長(zhǎng)承桥,這世上最難降的妖魔是什么驻粟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮凶异,結(jié)果婚禮上蜀撑,老公的妹妹穿的比我還像新娘。我一直安慰自己剩彬,他們只是感情好酷麦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著喉恋,像睡著了一般沃饶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上轻黑,一...
    開(kāi)封第一講書(shū)人閱讀 52,184評(píng)論 1 308
  • 那天糊肤,我揣著相機(jī)與錄音,去河邊找鬼氓鄙。 笑死馆揉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的抖拦。 我是一名探鬼主播升酣,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舷暮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了噩茄?” 一聲冷哼從身側(cè)響起下面,我...
    開(kāi)封第一講書(shū)人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巢墅,沒(méi)想到半個(gè)月后诸狭,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡君纫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年驯遇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蓄髓。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叉庐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出会喝,到底是詐尸還是另有隱情陡叠,我是刑警寧澤,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布肢执,位于F島的核電站枉阵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏预茄。R本人自食惡果不足惜兴溜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耻陕。 院中可真熱鬧拙徽,春花似錦、人聲如沸诗宣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)召庞。三九已至岛心,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篮灼,已是汗流浹背鹉梨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留穿稳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓晌坤,卻偏偏與公主長(zhǎng)得像逢艘,于是被迫代替她去往敵國(guó)和親旦袋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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

  • 個(gè)人專(zhuān)題目錄[http://www.reibang.com/p/140e2a59db2c] Docker簡(jiǎn)介 1...
    Java及SpringBoot閱讀 749評(píng)論 0 11
  • runoob-docker教程 總結(jié) 查看ip 查看容器運(yùn)行狀態(tài)(cpu和內(nèi)存這些) 進(jìn)入容器內(nèi)進(jìn)行命令行操作 使...
    tianmac閱讀 1,224評(píng)論 1 1
  • [TOC] 1.Docker 安裝運(yùn)行 Nginx 1.1Docker 安裝 Nginx 1.1.1.docker...
    等待未果閱讀 1,442評(píng)論 0 5
  • 從小就有一個(gè)夢(mèng)想祭阀,那就是長(zhǎng)大我要成為有錢(qián)人,特別特別有錢(qián)的那種鲜戒,雖然現(xiàn)在并沒(méi)有實(shí)現(xiàn)专控,但是越發(fā)的篤定了我的想法。 你...
    魔導(dǎo)閱讀 563評(píng)論 0 1
  • 生活是一杯苦酒遏餐,卻想要有甘甜的味道伦腐,何方是希望的盡頭。
    雨大閱讀 234評(píng)論 0 0