linux

LNMP与Docker结合使用教程

小樊
48
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 服务名

六、注意事项

通过以上步骤,可快速搭建基于Docker的LNMP环境,实现灵活部署与高效管理。

0
看了该问题的人还看了