快速在 CentOS 上部署 Nginx 应用
介绍
Nginx 是一个高性能的开源 Web 服务器软件,常用于搭建静态或动态网站、反向代理、负载均衡和缓存等。
快速使用
使用 Docker 部署
环境搭建
创建容器
- 在系统任意位置创建一个文件夹(可选),此文档以
/opt/docker/nginx
为例
mkdir -p /opt/docker/nginx
mkdir -p /opt/docker/nginx/{conf,html,logs}
注意:推荐大家养成习惯,为每个项目创建一个目录,所有配置或产生的数据都可以放在该目录中保存或管理。
- 拉取镜像
默认拉取的是最新的镜像,可按需指定版本,如:nginx:last
、nginx:2.x
等等
docker pull nginx
- 创建简单容器
这里只需创建一个可以运行的容器,不用做过多的参数配置,目的只是为了获取容器内的一些固定配置或数据
docker run --name nginx -p 80:80 -d nginx
- 拷贝容器内配置文件或目录
i. 查看容器 ID 或名称
docker ps
# or
docker ps -a
ii. 将容器中的 nginx.conf
、conf.d
等映射到本地目录中
docker cp [ID|NAME]:/etc/nginx/nginx.conf /opt/docker/nginx/conf
docker cp [ID|NAME]:/etc/nginx/conf.d /opt/docker/nginx/conf
docker cp [ID|NAME]:/usr/share/nginx/html /opt/docker/nginx
iii. 停止并移除容器
docker stop [ID|NAME]
docker rm [ID|NAME]
- 重新创建一个容器(带参数)
docker run --name nginx -m 200m -p 80:80 \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/logs:/var/log/nginx \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
--privileged=true -d nginx
docker run 命令参数说明
--name
:为容器指定一个名称
-m
:设置容器使用内存最大值
-p
:端口映射,格式为主机(宿主)端口:容器端口
-v
: 工作目录映射。形式为:-v 宿主机路径:/...
,后者不能修改。
--privileged=true
:容器内部对挂载的目录拥有读写等特权
-d
: 后台运行容器
- 访问地址
http://ip:端口号
更新容器
- 停止运行中的容器
docker stop [ID|NAME]
docker rm [ID|NAME]
- 备份数据(重要)
cp -r /opt/docker/nginx /opt/docker/nginx.archive
- 更新服务
- 拉取指定版本镜像(默认最新)
# 示例:docker pull nginx:last
docker pull [IMAGE]
- 重新启动容器
修改版本号后,按照最初安装的方式,重新创建容器即可。
docker run --name nginx -m 200m -p 80:80 \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/logs:/var/log/nginx \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
--privileged=true -d nginx:2.x.x
使用 Docker Compose 部署
环境搭建
创建容器
- 在系统任意位置创建一个文件夹(可选),此文档以
/opt/docker/nginx
为例
mkdir -p /opt/docker/nginx && cd /opt/docker/nginx
mkdir ./{conf,data,html,logs}
注意:后续操作中,产生的所有数据都会保存在这个目录,请妥善保存。
- 拷贝容器内配置文件或目录
i. 创建一个简单容器
docker run --name nginx -p 80:80 -d nginx
ii. 将容器中的 nginx.conf
、conf.d
等映射到本地目录中
docker cp [ID|NAME]:/etc/nginx/nginx.conf /opt/docker/nginx/conf
docker cp [ID|NAME]:/etc/nginx/conf.d /opt/docker/nginx/conf
docker cp [ID|NAME]:/usr/share/nginx/html /opt/docker/nginx
iii. 停止并移除容器
docker stop [ID|NAME]
docker rm [ID|NAME]
- 创建
docker-compose.yaml
version: '3'
services:
nginx:
image: nginx
privileged: true
ports:
- 80:80
volumes:
- ./conf/conf.d:/etc/nginx/conf.d
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html/
- ./logs:/var/log/nginx
- 访问地址
http://ip:端口号
更新容器
- 停止运行中的容器
cd /opt/docker/nginx && docker-compose down
- 备份数据(重要)
cp -r /opt/docker/nginx /opt/docker/nginx.archive
需要注意的是,文件名不一定要根据此文档命名,这里仅仅是个示例。
- 更新服务
- 修改
docker-compose.yaml
中配置的镜像版本 - 拉取镜像
docker-compose pull nginx
- 重新启动容器
docker-compose up -d
实际案例
编排 nginx + springboot 项目
- 创建
docker-compose.yaml
version: '3'
services:
nginx:
image: nginx
privileged: true
ports:
- 80:80
volumes:
- ./conf/conf.d:/etc/nginx/conf.d
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./html:/usr/share/nginx/html/
- ./logs:/var/log/nginx
app:
image: app
expose:
- "8080"
- 在
./conf/conf.d
目录下编写app.conf
文件
server {
listen 80;
access_log off;
location / {
proxy_pass http://app:8080;
}
}
- 启动服务
cd /opt/docker/nginx && docker-compose up -d
- 访问地址