LNMP环境搭建案例
项目结构
首先,创建一个新的目录结构来容纳LNMP项目:
lnmp-docker/
├── Dockerfile
├── docker-compose.yml
├── nginx/
│ └── default.conf
└── php/
└── Dockerfile
1. 编写docker-compose.yml
使用Docker Compose方便我们管理多个服务。创建docker-compose.yml
文件,内容如下:
version: '3.8'
services:
web:
build:
context: ./php
volumes:
- ./html:/var/www/html
networks:
- lnmp_network
nginx:
image: nginx:latest
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./html:/var/www/html
ports:
- "80:80"
networks:
- lnmp_network
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: my_database
MYSQL_USER: user
MYSQL_PASSWORD: user_password
networks:
- lnmp_network
networks:
lnmp_network:
driver: bridge
2. 编写PHP Dockerfile
在php
目录下创建一个Dockerfile
,内容如下:
# 使用官方PHP镜像
FROM php:7.4-fpm
# 安装必要的扩展
RUN docker-php-ext-install pdo pdo_mysql
# 设置工作目录
WORKDIR /var/www/html
3. 配置Nginx
在nginx
目录下创建default.conf
文件,内容如下:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass web:9000; # 指向php服务
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
4. 创建HTML文件
在lnmp-docker
目录下,创建html
文件夹,并在其中创建一个index.php
文件,内容如下:
<?php
phpinfo();
?>
5. 启动服务
在终端中,导航到lnmp-docker
目录并使用以下命令启动服务:
docker-compose up -d
6. 测试LNMP环境
在浏览器中访问http://localhost
,你应该能看到PHP信息页面,表示LNMP环境已成功搭建。
7. 连接到MySQL
你可以通过MySQL客户端连接到数据库(尽量不要用docker去搭建),使用以下命令:
docker exec -it <mysql_container_id> mysql -u user -p
输入创建时设置的用户密码(在docker-compose.yml中为user_password
)。
总结
通过以上步骤,我们成功搭建了一个LNMP环境,包括Nginx、PHP和MySQL。使用Docker和Docker Compose的方式极大地简化了环境的配置和管理,确保了环境的一致性。你可以根据实际需求,进一步扩展和修改配置。
希望这个案例能够帮助你更好地理解如何使用Dockerfile和Docker Compose搭建LNMP环境.