docker容器部署简单php和nginx相关目录

在 Docker 容器中,目录结构的设计通常取决于基础镜像以及应用程序的需求。不过,有一些常见的目录和文件是许多容器都会用到的。以下是这些常见目录及其功能的概述:

常见目录结构

  1. /var/www/html/usr/share/nginx/html

    • 用途: 用于存放 Web 应用程序的静态资源(如 HTML 文件、CSS、JavaScript 和图片等)。
    • 示例: 在基于 Nginx 的容器中,静态网站内容通常放在 /usr/share/nginx/html 下;而对于 PHP 应用,可能会映射到 /var/www/html
  2. /etc/nginx

    • 用途: 存储 Nginx 的配置文件。

    • 子目录与文件:

      • nginx.conf: 主配置文件,定义了 Nginx 的全局设置。
  • conf.d/: 包含额外的配置文件,通常是针对不同站点或服务的配置片段。
    • sites-available/sites-enabled/: 类似于 Apache 的配置管理方式,前者存储所有可用的站点配置,后者通过符号链接指向启用的站点配置。
  1. /etc/php/usr/local/etc/php

    • 用途: 存储 PHP 的配置文件。

    • 子目录与文件:

      • php.ini: PHP 的主要配置文件,控制 PHP 的运行时行为。
  • conf.d/: 包含其他 PHP 扩展的配置文件。
  1. /var/log/nginx/var/log/php-fpm

    • 用途: 存储日志文件。

    • 示例:

      • access.log: 记录所有的访问请求。
  • error.log: 记录错误信息。
  1. /usr/src/opt

    • 用途: 用于存放源代码或第三方库。
    • 示例: 如果你需要编译某些软件或者存放应用依赖,可以将它们放置在这里。
  2. /root

    • 用途: 根用户的主目录,一般不建议在此存放应用相关的数据,但有时会用于存放一些临时脚本或工具。
  3. /tmp

    • 用途: 临时文件的存放位置,容器重启时可能被清理。
    • 注意事项: 不适合长期存储重要数据。
  4. /var/lib/mysql/var/lib/postgresql

    • 用途: 数据库管理系统(如 MySQL 或 PostgreSQL)的数据存储位置。
    • 示例: 这些目录通常会被挂载为卷(volume),以便持久化数据库数据。
  5. /etc/mysql/etc/postgresql

    • 用途: 存储数据库配置文件。
    • 示例: 包括数据库服务器的配置文件,如 my.cnfpostgresql.conf
  6. /run

    • 用途: 存储进程 ID 文件(PID files)、sockets 等运行时数据。
    • 注意事项: 此目录的内容在系统重启后通常不会保留。

其他注意事项

  • 挂载点(Volumes): 在生产环境中,通常会使用 Docker 卷来挂载重要的目录(如数据库数据目录、日志目录等),以确保数据的持久性和隔离性。
  • 环境变量: 很多容器化应用依赖环境变量来进行配置,例如数据库连接字符串、API 密钥等。
  • 健康检查(Healthcheck): 使用 Docker 的 HEALTHCHECK 指令可以定期检查容器内应用的状态,确保其正常运行。

实际例子

假设你有一个简单的 LEMP(Linux, Nginx, MySQL, PHP)栈的应用,其目录结构可能如下所示:

/var/www/html/
├── index.php
├── css/
   └── style.css
└── js/
    └── script.js

/etc/nginx/
├── nginx.conf
└── conf.d/
    └── default.conf

/usr/local/etc/php/
├── php.ini
└── conf.d/
    └── custom.ini

/var/log/nginx/
├── access.log
└── error.log

/var/lib/mysql/
└── (MySQL 数据文件)

/etc/mysql/
└── my.cnf

这种结构清晰地分离了不同的职责:Web 内容、Web 服务器配置、PHP 配置、日志记录和数据库数据。每个部分都有明确的作用,便于维护和扩展。