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 服務名 
#停止并刪除容器、網絡、卷、鏡像 
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的網絡
     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)建了一個自定義的網絡叫做lnmp
  lnmp:

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

執(zhí)行docker compose

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


在~lnmp/www/目錄下新建test.php文件,文件里面寫上phpinfo函數,測試下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)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容