Dockerfile搭建环境案例

LNMP环境搭建案例

项目结构

首先,创建一个新的目录结构来容纳LNMP项目:

复制代码
lnmp-docker/
├── Dockerfile
├── docker-compose.yml
├── nginx/
│   └── default.conf
└── php/
    └── Dockerfile

1. 编写docker-compose.yml

使用Docker Compose方便我们管理多个服务。创建docker-compose.yml文件,内容如下:

yaml 复制代码
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,内容如下:

dockerfile 复制代码
# 使用官方PHP镜像
FROM php:7.4-fpm

# 安装必要的扩展
RUN docker-php-ext-install pdo pdo_mysql

# 设置工作目录
WORKDIR /var/www/html

3. 配置Nginx

nginx目录下创建default.conf文件,内容如下:

nginx 复制代码
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 复制代码
<?php
phpinfo();
?>

5. 启动服务

在终端中,导航到lnmp-docker目录并使用以下命令启动服务:

bash 复制代码
docker-compose up -d

6. 测试LNMP环境

在浏览器中访问http://localhost,你应该能看到PHP信息页面,表示LNMP环境已成功搭建。

7. 连接到MySQL

你可以通过MySQL客户端连接到数据库(尽量不要用docker去搭建),使用以下命令:

bash 复制代码
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环境.

相关推荐
xingfujie7 小时前
运维实战攻略
运维
道清茗8 小时前
【RH294知识点汇总】第 9 章 《 自动执行 Linux 管理任务 》常见问题
linux·运维·服务器
北方的流星8 小时前
华三路由器NAT配置
运维·网络·华三
wj3055853788 小时前
Codex + Git 开发环境配置指南(WSL版)
linux·运维·git
星马梦缘9 小时前
如何切换window-ubuntu双系统【方案二】
linux·运维·ubuntu
2501_927283589 小时前
荣联汇智助力天津艺虹打造“软硬一体”智慧工厂,全流程自动化引领印刷包装行业数智变革
大数据·运维·数据仓库·人工智能·低代码·自动化
HXDGCL10 小时前
矩形环形导轨:自动化循环线的核心运动单元解析
运维·算法·自动化
运维全栈笔记11 小时前
K8S部署Redis高可用全攻略:1主2从3哨兵架构实战
redis·docker·云原生·容器·架构·kubernetes·bootstrap
Jinkxs11 小时前
LoadBalancer- 主流负载均衡工具盘点:Nginx / Haproxy / Keepalived 基础介绍
运维·nginx·负载均衡
CQU_JIAKE12 小时前
4.28~4.30【Q】
linux·运维·服务器