这是一个Nginx容器化运行的Docker Compose实践示例,是不是最佳那要看是否适合实际应用。 它涵盖了配置文件挂载、日志和静态文件的数据持久化、健康检查等方面。
假设项目目录结构如下:
nginx_project/
├── docker-compose.yml
├── conf.d
│ └── default.conf # Nginx自定义配置文件
├── html
│ ├── index.html # 静态网页文件
│ └── other_files # 其他静态资源
└── logs1. docker-compose.yml 文件内容
version: '3.8'
services:
nginx:
image: nginx:latest
container_name: my_nginx
ports:
- "80:80"
- "443:443"
volumes:
-./conf.d:/etc/nginx/conf.d # 挂载自定义配置文件目录
-./html:/usr/share/nginx/html # 挂载静态文件目录
-./logs:/var/log/nginx # 挂载日志目录
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s2. 配置文件说明
image: 指定使用的Nginx镜像,这里使用最新版本。container_name: 为容器指定一个自定义名称,方便管理和识别。ports: 将容器内的80端口(HTTP)和443端口(HTTPS)映射到宿主机的对应端口,以实现外部访问。volumes:./conf.d:/etc/nginx/conf.d:将宿主机当前目录下的conf.d目录挂载到容器内的/etc/nginx/conf.d目录,这样可以在宿主机上修改Nginx配置文件,容器内的配置会同步更新。./html:/usr/share/nginx/html:将宿主机的html目录挂载到容器内的/usr/share/nginx/html目录,用于存放静态网页文件和其他静态资源,实现数据持久化。./logs:/var/log/nginx:将宿主机的logs目录挂载到容器内的/var/log/nginx目录,用于保存Nginx的访问日志和错误日志等,方便排查问题。
restart: 设置容器的重启策略为除非手动停止,否则自动重启,以保证服务的可用性。healthcheck: 配置健康检查,使用curl命令检查Nginx服务是否能正常响应,每10秒检查一次,超时时间为5秒,连续失败3次则认为容器不健康,启动后的30秒内不进行检查。
3. 自定义配置文件示例(conf.d/default.conf)
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}这个配置文件定义了一个基本的Nginx服务器,监听80端口,将请求导向 /usr/share/nginx/html 目录下的静态文件。
4. 静态网页文件示例(html/index.html)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>My Nginx Page</title>
</head>
<body>
<h1>Welcome to My Nginx Page</h1>
</body>
</html>5. 操作步骤
将上述文件按照目录结构放置在宿主机上。
在
nginx_project目录下,打开终端,执行docker compose up -d命令,以守护进程模式启动Nginx容器。可以通过浏览器访问
http://localhost来查看Nginx服务是否正常运行,同时可以查看logs目录下的日志文件,以及在宿主机修改conf.d目录下的配置文件来调整Nginx配置。
通过以上配置,能够实现Nginx的容器化运行,并具备配置灵活调整、数据持久化和健康检查等功能,满足生产环境的基本需求。
评论区