Docker Compose一鍵搭建lnmp開發(fā)環(huán)境

docker compose是用來配置和運行多容器服務的工具(適用于單機惫叛,集群請使用k8s)常空,通過docker-compose命令可輕松對多個容器進行如下操作:

(1)啟動篙螟,停止和重建服務
(2)查看正在運行的服務的狀態(tài)
(3)通過流輸出正在運行的服務的日志
(4)對某個服務執(zhí)行命令

安裝docker compose, 官方文檔:https://docs.docker.com/compose/install/

# 下載docker compose(Linux版本)
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 增加執(zhí)行權限
sudo chmod +x /usr/local/bin/docker-compose
# 成功檢查
docker-compose -v

執(zhí)行docker compose準備步驟

1系任、準備好需要修改的配置文件(比如nginx.conf等)乓旗,如果需要自己構建Dockerfile文件坪郭,也請準備好Dockerfile
2奢方、在 docker-compose.yml 中定義好各個容器的相關配置
3颁督、執(zhí)行docker-compose up -d命令单雾,docker compose會幫你完成一整套拉取鏡像/構建鏡像赚哗,啟動容器等操作她紫。
docker-compose.yml是docker compose用來配置容器應用的配置文件,默認就叫docker-compose.yml屿储,最好是放在當前操作的目錄下贿讹,當然也可以單獨指定文件路徑。

docker compose的常用命令

#啟動并后臺運行所有的服務 
docker-compose up  -d 
#列出項目中目前的所有容器 
docker-compose ps 
#停止某個服務 
docker-compose stop 服務名 
#啟動某個服務 
docker-compose start 服務名 
#停止并刪除容器够掠、網(wǎng)絡民褂、卷、鏡像 
docker-compose down

docker compose 搭建lnmp開發(fā)環(huán)境

nginx 準備配置文件

# nginx掛載目錄
mkdir ~/lnmp && cd ~/lnmp
mkdir nginx && cd nginx && mkdir conf && cd conf
# nginx默認配置文件
vi default.conf

nginx默認配置文件內容如下:

server {
    listen       80;
    root   /usr/share/nginx/html;
    index   index.html index.htm index.php;


    # 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;
    }

    location / {
        index  index.html index.htm index.php ;
        try_files $uri $uri/ /index.php?$query_string;
        autoindex  on;
    }


    location ~ \.php$ {
        #php73是容器命名
        fastcgi_pass   php73:9000;
        fastcgi_index  index.php;
        include        fastcgi_params;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
    }

}

在docker-compose.yml文件中定義好我們需要的nginx疯潭,php和mysql相關的配置赊堪,如下:

cd ~/lnmp
vi docker-compose.yml
#定義docker compose yml版本
version: "3"  
#定義我們的服務對象
services:   
#自定義的服務名稱
  nginx:    
     #鏡像名稱,默認拉取本地鏡像竖哩,沒有的話從遠程獲取
     image: nginx:latest
     #自定義容器的名稱
     container_name: c_nginx
     #將宿主機的80端口映射到容器的80端口
     ports:
      - "80:80"
     #將宿主機的~/lnmp/www目錄和容器的/usr/share/nginx/html目錄進行綁定哭廉,并設置rw權限
     #將宿主機的~/lnmp/nginx/conf/default.conf和容器的/etc/nginx/conf.d/default.conf進行綁定
     volumes:
      - ~/lnmp/www/:/usr/share/nginx/html/:rw
      - ~/lnmp/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf
     #設置環(huán)境變量,當前的時區(qū)
     environment:
      TZ: "Asia/Shanghai"
     #容器是否隨docker服務啟動重啟
     restart: always
     #容器加入名為lnmp的網(wǎng)絡
     networks:
      - lnmp
  php:
    image: php:7.3.29-fpm
    container_name: php73
    volumes:
      - ~/lnmp/www/:/var/www/html/:rw
    restart: always
    cap_add:
      - SYS_PTRACE
    networks:
      - lnmp

  mysql:
    image: mysql:5.6
    container_name: mysql56
    ports:
      - "3306:3306"
    volumes:
      - ~/lnmp/mysql/data:/var/lib/mysql/:rw
    restart: always
    networks:
      - lnmp
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      TZ: "Asia/Shanghai"
networks:   
  #創(chuàng)建了一個自定義的網(wǎng)絡叫做lnmp
  lnmp:

執(zhí)行docker-compose up -d命令相叁,等命令執(zhí)行完遵绰,我們的lnmp安裝完成

執(zhí)行docker compose

下面,我們來測試下安裝是否正常增淹,在~/lnmp/www/下新建一個index.html文件街立,并輸出welcome to nginx!!


在~lnmp/www/目錄下新建test.php文件,文件里面寫上phpinfo函數(shù)埠通,測試下php配置是否正常,訪問如下


image.png

在~lnmp/www/目錄下新建mysql.php文件逛犹,文件里面寫上連接mysql的代碼端辱,測試下mysql配置是否正常

需要先進入php容器安裝mysqli pdo等模塊

#宿主機
docker exec -it php73 /bin/bash
#php容器
docker-php-ext-install pdo pdo_mysql mysqli
docker-php-ext-enable pdo pdo_mysql mysqli
exit
#宿主機重啟服務
docker-compose restart
<?php
// 創(chuàng)建連接
$conn = new mysqli('mysql56','root','123456');
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}
echo "connect success";
<?php
try {
    $pdo = new PDO("mysql:host=mysql56","root","123456");
    $pdo = null;
    print "連接成功";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末虽画,一起剝皮案震驚了整個濱河市舞蔽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌码撰,老刑警劉巖渗柿,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異脖岛,居然都是意外死亡朵栖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門柴梆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陨溅,“玉大人,你說我怎么就攤上這事绍在∶派龋” “怎么了雹有?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長臼寄。 經(jīng)常有香客問我霸奕,道長,這世上最難降的妖魔是什么吉拳? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任质帅,我火速辦了婚禮,結果婚禮上合武,老公的妹妹穿的比我還像新娘临梗。我一直安慰自己,他們只是感情好稼跳,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布盟庞。 她就那樣靜靜地躺著,像睡著了一般汤善。 火紅的嫁衣襯著肌膚如雪什猖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天红淡,我揣著相機與錄音不狮,去河邊找鬼。 笑死在旱,一個胖子當著我的面吹牛摇零,可吹牛的內容都是我干的。 我是一名探鬼主播桶蝎,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼驻仅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了登渣?” 一聲冷哼從身側響起噪服,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎胜茧,沒想到半個月后粘优,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡呻顽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年雹顺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片廊遍。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡无拗,死狀恐怖,靈堂內的尸體忽然破棺而出昧碉,到底是詐尸還是另有隱情英染,我是刑警寧澤揽惹,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站四康,受9級特大地震影響搪搏,放射性物質發(fā)生泄漏。R本人自食惡果不足惜闪金,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一疯溺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哎垦,春花似錦囱嫩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郑口,卻和暖如春鸳碧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背犬性。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工瞻离, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人乒裆。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓套利,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹤耍。 傳聞我的和親對象是個殘疾皇子日裙,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容