当前位置: 首页 > news >正文

Dockerfile搭建环境案例

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: ./phpvolumes:- ./html:/var/www/htmlnetworks:- lnmp_networknginx:image: nginx:latestvolumes:- ./nginx/default.conf:/etc/nginx/conf.d/default.conf- ./html:/var/www/htmlports:- "80:80"networks:- lnmp_networkdb:image: mysql:5.7environment:MYSQL_ROOT_PASSWORD: root_passwordMYSQL_DATABASE: my_databaseMYSQL_USER: userMYSQL_PASSWORD: user_passwordnetworks:- lnmp_networknetworks: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环境.


http://www.mrgr.cn/news/46940.html

相关文章:

  • TCP、UDP的区别及使用场景
  • 大模型训练_硬件微调知识增强
  • web worker 前端多线程学习一、
  • FPGA的 基本结构(Xilinx 公司Virtex-II 系列FPGA )
  • SVG图表
  • 简单组合逻辑
  • npm install报错一堆sass gyp ERR!
  • 解决html2canvas图片模糊不清,超出一页长截图问题
  • python爬虫 - 数据提取
  • 【无人水面艇路径跟随控制10】(Matlab)USV代码阅读:testUSV仿真无人水面艇在一定时间内的运动,使用欧拉法对状态进行积分,并绘制仿真结果
  • Day2 IDEA
  • C#中,虚方法(virtual) 和 抽象方法(abstract)的应用说明
  • Elasticsearch 索引备份
  • python xml的读取和写入
  • 【centos 虚拟机】kvm权限报错解决 gid:107
  • Unity3D 动画回调函数详解
  • 怎么把mov格式的视频转换mp4?视频格式转换就看这5招!(值得收藏)
  • 喜讯!华秋电子宣布完成新一轮3.1亿元融资
  • 引领数字化转型新潮流:The Open Group 2024生态系统架构·可持续发展年度大会邀您共襄盛举
  • 从零开始搭建一个node.js后端服务项目
  • 二叉树搜索
  • 解决 MySQL 连接数过多导致的 SQLNonTransientConnectionException 问题
  • 负载均衡(Load Balancing)
  • 华为OD机试真题-最佳对手-2024年OD统一考试(E卷)
  • 【docker】存储之目录挂载和卷映射
  • mysql主从配置