溫馨提示×

LNMP與Docker結合使用教程

小樊
44
2025-08-27 07:06:23
欄目: 智能運維

以下是LNMP與Docker結合使用的詳細教程,基于主流工具和最佳實踐設計:

一、基礎環境準備

  1. 安裝Docker和Docker Compose

    • 基于Debian/Ubuntu系統:
      sudo apt update && sudo apt install docker.io docker-compose
      
    • 驗證安裝:
      docker --version && docker-compose --version
      
  2. 創建項目目錄結構

    mkdir lnmp-docker && cd lnmp-docker
    mkdir nginx mysql php logs
    

二、使用Docker Compose快速部署

  1. 編寫docker-compose.yml

    version: '3.8'
    services:
      nginx:
        image: nginx:alpine
        container_name: nginx
        ports:
          - "80:80"
          - "443:443"
        volumes:
          - ./nginx/conf.d:/etc/nginx/conf.d
          - ./www:/usr/share/nginx/html
        depends_on:
          - php
        networks:
          - lnmp-net
    
      php:
        image: php:8.2-fpm-alpine
        container_name: php
        volumes:
          - ./www:/var/www/html
          - ./php/php.ini:/usr/local/etc/php/php.ini
        networks:
          - lnmp-net
    
      mysql:
        image: mysql:8.0
        container_name: mysql
        environment:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: testdb
          MYSQL_USER: user
          MYSQL_PASSWORD: password
        volumes:
          - ./mysql/data:/var/lib/mysql
        ports:
          - "3306:3306"
        networks:
          - lnmp-net
    
    networks:
      lnmp-net:
        driver: bridge
    
  2. 啟動服務

    docker-compose up -d
    
    • 查看運行狀態:
      docker-compose ps
      

三、自定義配置與擴展

  1. Nginx配置

    • nginx/conf.d/default.conf中添加PHP解析規則:
      location ~ \.php$ {
          fastcgi_pass php:9000;
          fastcgi_index index.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      }
      
    • 重啟Nginx:
      docker-compose restart nginx
      
  2. PHP擴展安裝

    • 自定義PHP鏡像(可選):
      創建php/Dockerfile
      FROM php:8.2-fpm-alpine
      RUN docker-php-ext-install pdo_mysql mysqli
      
    • 構建并替換鏡像:
      docker build -t php-custom ./php
      
      然后在docker-compose.yml中引用php-custom鏡像。
  3. MySQL數據持久化

    • 通過volumes將宿主機目錄掛載到容器數據目錄,確保數據不丟失:
      volumes:
        - ./mysql/data:/var/lib/mysql
      

四、項目部署與測試

  1. 部署PHP項目

    • 將項目文件放入www目錄,確保包含index.php測試文件:
      <?php
      phpinfo();
      ?>
      
  2. 訪問測試

    • 瀏覽器訪問http://宿主機IP,若看到PHP信息頁面,則配置成功。

五、常用操作命令

操作 命令
啟動服務 docker-compose up -d
停止服務 docker-compose down
查看日志 docker-compose logs -f
進入容器 docker exec -it 容器名 bash
重啟單個服務 docker-compose restart 服務名

六、注意事項

  • 端口沖突:確保宿主機80、3306等端口未被占用,可在docker-compose.yml中修改映射端口。
  • 權限問題:掛載目錄時需確保宿主機目錄可被容器讀寫,可通過chmod設置權限。
  • 生產環境:建議使用自定義鏡像并配置HTTPS、防火墻規則,避免直接暴露敏感端口。

通過以上步驟,可快速搭建基于Docker的LNMP環境,實現靈活部署與高效管理。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女