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环境.

相关推荐
鲁正杰34 分钟前
在一个服务器上抓取 Docker 镜像并在另一个服务器上运行
运维·服务器·docker
aherhuo1 小时前
基于openEuler22.09部署OpenStack Yoga云平台(一)
linux·运维·服务器·openstack
WebDeveloper20011 小时前
如何使用美国域名中心US Domain Center和WordPress创建商业网站
运维·服务器·css·网络·html
老大白菜1 小时前
Windows 11 安装 Dify 完整指南 非docker环境
windows·docker·容器
檀越剑指大厂2 小时前
【Linux系列】Shell 脚本中的条件判断:`[ ]`与`[[ ]]`的比较
linux·运维·服务器
2301_819287124 小时前
ce第六次作业
linux·运维·服务器·网络
CIb0la4 小时前
GitLab 停止为中国区用户提供 GitLab.com 账号服务
运维·网络·程序人生
武汉联从信息4 小时前
如何使用linux日志管理工具来管理oracle osb服务器日志文件?
linux·运维·服务器
天天进步20154 小时前
STUN服务器实现NAT穿透
运维·服务器
PieroPc4 小时前
Python 自动化 打开网站 填表登陆 例子
运维·python·自动化