运维 | 如何在 Centos 上快速部署 nginx | Docker
前言
Nginx 是一个高性能的开源 Web 服务器软件,常用于搭建静态或动态网站、反向代理、负载均衡和缓存等。
本章主要简述如何使用 Nginx 的配置和部署,实现静态托管。
快速安装
使用 Docker 部署
环境搭建
- Docker 安装文档:https://docs.docker.com/engine/install/
创建容器
- 在系统任意位置创建一个文件夹(可选),此文档以
/opt/docker/nginx
为例
mkdir -p /opt/docker/nginx && cd /opt/docker/nginx
注意:推荐大家养成习惯,为每个项目创建一个目录,所有配置或产生的数据都可以放在该目录中保存或管理。
- 拉取镜像
默认拉取的是最新的镜像,可按需指定版本,如: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 部署
环境搭建
- Docker 安装文档:https://docs.docker.com/engine/install/
- Docker Compose 安装文档:https://docs.docker.com/compose/install/
创建容器
- 在系统任意位置创建一个文件夹(可选),此文档以
/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
需要注意的是,
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
- 访问地址
结尾
本期的内容就到这里,路过的小伙伴记得支持一下哦!