基于docker-compose跑起一個php網站

昨天拿到一個用thinkphp開發(fā)的網站玖瘸,需要跑起來看看效果杰捂,但苦于自己好久不開發(fā)PHP了舆床,手里已經沒有集成環(huán)境,便想著用docker搭一套環(huán)境嫁佳,本以為可以信手拈來挨队,沒想到還踩了不少坑,也對之前一知半解的東西加深了一下理解蒿往,故在這里記錄一下

準備鏡像

這個沒有多大問題盛垦,去hub.docker.com找些官方的鏡像就可以了,我這兒用到了nginx瓤漏,php-fpm,mysql,獲取命令放在這兒腾夯,方便大家直接使用

docker pull nginx

docker pull bitnami/php-fpm

docker pull mysql

編寫docker-compose.yml

version: "3"
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./default.conf:/etc/nginx/conf.d/default.conf ##配置文件位置映射
      - .:/usr/share/nginx/html     ##網頁文件位置映射
    depends_on:
      - php
  php:
    image: bitnami/php-fpm
    volumes:
      - .:/app ##網頁文件位置映射
    depends_on:
      - mysql
    links: 
      - mysql
  mysql:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_PASSWORD: EisBzdye6adiJHHj ##數(shù)據(jù)庫用戶密碼
      MYSQL_DATABASE: www_ammopic_com
      MYSQL_USER: www_ammopic_com
    ports: 
      - 3306:3306
    volumes:
      - ./www_ammopic_com.sql:/docker-entrypoint-initdb.d/db.sql

問題1:依賴啟動

nginx依賴于php-fpm,php-fpm又依賴于mysql颊埃,depends_on很好的解決了這個問題

問題2:mysql自動填充創(chuàng)建數(shù)據(jù)庫以及填充數(shù)據(jù)

雖然可以把mysql先運行起來,然后把sql文件拷貝進去蝶俱,然后進入容器執(zhí)行導入腳本班利,但總覺得這樣操作很low,都想好了要做一條命令啟動一個環(huán)境了跷乐,如果還有這么多操作就違背初衷了肥败。
查了一下,mysql有個機制愕提,可以從/docker-entrypoint-initdb.d/這個路徑下檢查sql文件馒稍,sh腳本等,從而實現(xiàn)自動導入數(shù)據(jù)的功能浅侨,非常好用纽谒,完美的解決了這個問題

問題3:各容器之間如何通信,統(tǒng)一端口映射到主機非常不優(yōu)雅

之前操作的時候因為經常開發(fā)如输,所以像nginx鼓黔,mysql這些都是把端口直接映射到主機的,這樣方便了開發(fā)不见,但又違背了初衷澳化。所幸links完美的解決了這個問題,這樣在代碼里連接mysql稳吮,在nginx里連接php-fpm都很方便了缎谷,而且不會對外暴露,非常好用

編寫nginx配置文件

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    root   /usr/share/nginx/html/public;

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

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root           /app/public;
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

這種寫了不知道多少遍的配置文件灶似,居然也出現(xiàn)了翻船的時候列林,正應了那句話,拳不離手曲不離口酪惭。

問題1:root目錄

thinkphp和laravel一樣希痴,是需要將根目錄映射到public目錄的,這該死的記性

問題2:連接到php-fpm應該如何寫

以前寫配置的時候nginx和php-fpm都是在同一臺機器上春感,所以代碼位置也放在了一起砌创,這一次代碼分別在nginx容器和php-fpm容器里,一時還寫不對了鲫懒。最后測試發(fā)現(xiàn)纺铭,在連接php-fpm的配置里,需要寫的文件位置是php-fpm容器里的代碼路徑刀疙,如上述文件的/app/public

最后執(zhí)行

docker compose up,鏡像沒有問題舶赔,但網站依舊訪問不了,究其原因谦秧,是因為奇葩的開發(fā)者寫的奇葩的邏輯竟纳,與本文想講的技術無關了撵溃,但依然忍不住想在這里吐槽,這種不靠譜的程序員什么時候能少一點……

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末锥累,一起剝皮案震驚了整個濱河市缘挑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌桶略,老刑警劉巖语淘,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異际歼,居然都是意外死亡惶翻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門鹅心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吕粗,“玉大人,你說我怎么就攤上這事旭愧÷睿” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵输枯,是天一觀的道長议泵。 經常有香客問我,道長桃熄,這世上最難降的妖魔是什么先口? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蜻拨,結果婚禮上,老公的妹妹穿的比我還像新娘桩引。我一直安慰自己缎讼,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布坑匠。 她就那樣靜靜地躺著血崭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪厘灼。 梳的紋絲不亂的頭發(fā)上夹纫,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音设凹,去河邊找鬼舰讹。 笑死,一個胖子當著我的面吹牛闪朱,可吹牛的內容都是我干的月匣。 我是一名探鬼主播钻洒,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼锄开!你這毒婦竟也來了素标?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤萍悴,失蹤者是張志新(化名)和其女友劉穎头遭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體癣诱,經...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡计维,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了狡刘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片享潜。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖嗅蔬,靈堂內的尸體忽然破棺而出剑按,到底是詐尸還是另有隱情,我是刑警寧澤澜术,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布艺蝴,位于F島的核電站,受9級特大地震影響鸟废,放射性物質發(fā)生泄漏猜敢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一盒延、第九天 我趴在偏房一處隱蔽的房頂上張望缩擂。 院中可真熱鬧,春花似錦添寺、人聲如沸胯盯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽博脑。三九已至,卻和暖如春票罐,著一層夾襖步出監(jiān)牢的瞬間叉趣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工该押, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疗杉,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓蚕礼,卻偏偏與公主長得像乡数,于是被迫代替她去往敵國和親椭蹄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內容