如何从零开始在docker里面搭建一个LNMP运行环境?

想象一下你有一个魔法盒子(Docker),你可以在这个盒子里创建一个小世界(容器),这个小世界里运行着 Nginx、MySQL 和 PHP,它们协同工作来提供 Web 服务。

准备工作

  1. 安装 Docker:首先确保你的电脑上已经安装了 Docker。如果你还没有安装,请访问 Docker 官网 下载并安装适合你操作系统的版本。
  2. 安装 Docker Compose(推荐):Docker Compose 可以让你更方便地管理多个容器。你可以通过包管理器或直接从 Docker Compose 官网 安装。

具体步骤

1. 创建项目目录

首先,我们需要为我们的 LNMP 项目创建一个新的文件夹。假设我们将其命名为 lnmp-docker

# 创建项目目录
mkdir lnmp-docker

# 进入项目目录
cd lnmp-docker
2. 创建 Docker Compose 文件

为了简化多容器应用的管理,我们将使用 Docker Compose。创建一个名为 docker-compose.yml 的文件,并添加如下内容:

version: '3'
services:
  # Nginx 服务
  nginx:
    image: nginx:latest
    ports:
      - "80:80" # 将主机的 80 端口映射到容器内的 80 端口
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d # 挂载 Nginx 配置文件
      - ./web:/var/www/html # 挂载网站文件
    depends_on:
      - php
    networks:
      - webnet

  # PHP 服务
  php:
    image: php:7.4-fpm
    volumes:
      - ./web:/var/www/html # 挂载网站文件
    networks:
      - webnet

  # MySQL 服务
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example # 设置 MySQL root 用户密码
      MYSQL_DATABASE: testdb # 创建一个数据库
      MYSQL_USER: user # 创建一个用户
      MYSQL_PASSWORD: password # 设置用户的密码
    volumes:
      - mysqldata:/var/lib/mysql # 持久化 MySQL 数据
    networks:
      - webnet

volumes:
  mysqldata:

networks:
  webnet:
3. 创建 Nginx 配置文件

在项目根目录下创建一个 nginx 文件夹,并在里面创建一个 conf.d 文件夹和一个 default.conf 文件。default.conf 文件用于配置 Nginx 如何与 PHP-FPM 通信。

# 创建 Nginx 配置文件夹和文件
mkdir -p nginx/conf.d
touch nginx/conf.d/default.conf

编辑 nginx/conf.d/default.conf 文件,添加以下内容:

server {
    listen 80;
    server_name localhost;

    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000; # 连接到 PHP-FPM 服务
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}
4. 创建一个简单的 PHP 文件

在项目根目录下创建一个 web 文件夹,并在里面创建一个 index.php 文件。

# 创建网站文件夹和文件
mkdir web
touch web/index.php

编辑 web/index.php 文件,添加以下内容:

<?php
// index.php
echo "<h1>Hello, LNMP on Docker!</h1>";
5. 构建并启动容器

现在我们可以使用 Docker Compose 来构建镜像并启动容器:

# 构建镜像并启动容器
docker-compose up -d --build

这将会:

  • 根据 docker-compose.yml 文件中的定义启动三个服务:Nginx、PHP 和 MySQL。
  • 将主机的 80 端口映射到 Nginx 容器内的 80 端口。
  • 挂载当前目录下的 web 文件夹到 Nginx 和 PHP 容器内的 /var/www/html 目录,以便实时同步代码更改。
  • 启动 MySQL 并设置好初始数据库和用户。
6. 测试应用程序

打开浏览器并访问 http://localhost,你应该会看到“Hello, LNMP on Docker!” 的消息,表示 LNMP 已经成功运行在 Docker 容器中了!

总结

通过以上步骤,我们已经成功地在一个 Docker 容器中搭建了一个 LNMP 运行环境。每个步骤都帮助我们配置了所需的依赖、安装了 Nginx、PHP 和 MySQL,并确保它们可以正确协同工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值