docker容器部署简单php和nginx相关目录
docker容器部署简单php和nginx相关目录
在 Docker 容器中,目录结构的设计通常取决于基础镜像以及应用程序的需求。不过,有一些常见的目录和文件是许多容器都会用到的。以下是这些常见目录及其功能的概述:
常见目录结构
-
/var/www/html
或/usr/share/nginx/html
- 用途: 用于存放 Web 应用程序的静态资源(如 HTML 文件、CSS、JavaScript 和图片等)。
- 示例: 在基于 Nginx 的容器中,静态网站内容通常放在
/usr/share/nginx/html
下;而对于 PHP 应用,可能会映射到/var/www/html
。
-
/etc/nginx
-
用途: 存储 Nginx 的配置文件。
-
子目录与文件:
nginx.conf
: 主配置文件,定义了 Nginx 的全局设置。
-
conf.d/
: 包含额外的配置文件,通常是针对不同站点或服务的配置片段。sites-available/
和sites-enabled/
: 类似于 Apache 的配置管理方式,前者存储所有可用的站点配置,后者通过符号链接指向启用的站点配置。
-
/etc/php
或/usr/local/etc/php
-
用途: 存储 PHP 的配置文件。
-
子目录与文件:
php.ini
: PHP 的主要配置文件,控制 PHP 的运行时行为。
-
conf.d/
: 包含其他 PHP 扩展的配置文件。
-
/var/log/nginx
或/var/log/php-fpm
-
用途: 存储日志文件。
-
示例:
access.log
: 记录所有的访问请求。
-
error.log
: 记录错误信息。
-
/usr/src
或/opt
- 用途: 用于存放源代码或第三方库。
- 示例: 如果你需要编译某些软件或者存放应用依赖,可以将它们放置在这里。
-
/root
- 用途: 根用户的主目录,一般不建议在此存放应用相关的数据,但有时会用于存放一些临时脚本或工具。
-
/tmp
- 用途: 临时文件的存放位置,容器重启时可能被清理。
- 注意事项: 不适合长期存储重要数据。
-
/var/lib/mysql
或/var/lib/postgresql
- 用途: 数据库管理系统(如 MySQL 或 PostgreSQL)的数据存储位置。
- 示例: 这些目录通常会被挂载为卷(volume),以便持久化数据库数据。
-
/etc/mysql
或/etc/postgresql
- 用途: 存储数据库配置文件。
- 示例: 包括数据库服务器的配置文件,如
my.cnf
或postgresql.conf
。
-
/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 配置、日志记录和数据库数据。每个部分都有明确的作用,便于维护和扩展。