以下是LNMP與Docker結合使用的詳細教程,基于主流工具和最佳實踐設計:
安裝Docker和Docker Compose
sudo apt update && sudo apt install docker.io docker-compose
docker --version && docker-compose --version
創建項目目錄結構
mkdir lnmp-docker && cd lnmp-docker
mkdir nginx mysql php logs
編寫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
啟動服務
docker-compose up -d
docker-compose ps
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;
}
docker-compose restart nginx
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
鏡像。MySQL數據持久化
volumes
將宿主機目錄掛載到容器數據目錄,確保數據不丟失:volumes:
- ./mysql/data:/var/lib/mysql
部署PHP項目
www
目錄,確保包含index.php
測試文件:<?php
phpinfo();
?>
訪問測試
http://宿主機IP
,若看到PHP信息頁面,則配置成功。操作 | 命令 |
---|---|
啟動服務 | docker-compose up -d |
停止服務 | docker-compose down |
查看日志 | docker-compose logs -f |
進入容器 | docker exec -it 容器名 bash |
重啟單個服務 | docker-compose restart 服務名 |
docker-compose.yml
中修改映射端口。chmod
設置權限。通過以上步驟,可快速搭建基于Docker的LNMP環境,實現靈活部署與高效管理。