前言: 编写docker部署nginx的脚本文件并执行,同时采用持久化存储的方式,对nginx相关目录或文件进行挂载。
Docker部署nginx(基础)
持久化存储
为了能够将nginx配置文件持久化挂载到本地磁盘,建议构建以下目录
- nginx-data
- conf
- html
先进入合适的目录,然后执行: mkdir -p ./nginx-data/{cert,conf,html}
构建nginx-install.sh脚本
#! /bin/bash
# 暂停容器
docker stop nginx_pro
# 删除容器
docker rm nginx_pro
# 配置环境变量,{username}替换成自己实际的用户目录
HOME=/home/{username}/docker-data/nginx-data
# 启动一个临时nginx容器,并将相关文件或目录复制到本地磁盘目录中
docker run --detach --name tmp_nginx nginx
sleep 5
docker cp tmp_nginx:/usr/share/nginx/html/ ${HOME}
docker cp tmp_nginx:/etc/nginx/conf.d ${HOME}/conf
docker cp tmp_nginx:/etc/nginx/nginx.conf ${HOME}/conf/nginx.conf
# 停止并销毁临时nginx容器
docker stop tmp_nginx
docker rm tmp_nginx
# 启动nginx,并挂在到相关文件目录
docker run --detach \
--name nginx_pro \
--publish 80:80 \
--publish 443:443 \
--volume ${HOME}/html:/usr/share/nginx/html \
--volume ${HOME}/conf/conf.d:/etc/nginx/conf.d \
--volume ${HOME}/conf/nginx.conf:/etc/nginx/nginx.conf nginx
注意:
- 确保HOME变量能定位到正确的位置,理论上该脚本可以重复执行。
- docker挂载目录时,该目录下只能包含纯文件,不能包含其它目录。
- docker挂载目标文件时,必须使用绝对路径,例如nginx.conf。
执行nginx-install.sh脚本
# 这里有两种执行方式
## 第一种:
## 增加可执行权限
chmod +x nginx-install.sh
## 执行
./nginx-install.sh
# 或
## 第二种
## 直接执行
sh nginx-install.sh
测试
1.检查本地文件是否挂载成功
进入nginx-data目录下,检查conf, conf/conf.d, html目录下是否存在对应的文件
2.查看容器是否正常运行
执行指令:
# 查看正在运行的容器
docker ps
# 查看所有容器(运行或停止)
docker ps -a
3.访问网址
3.1 在服务器上可以执行curl localhost
测试是否返回网页内容。
3.2 在个人电脑浏览器里可以输入http://ip
或http://domain.com
访问网页内容。
注意: 如果在服务器上能够访问,个人电脑浏览器无法走公网访问,要检查服务器防火墙是否开放了80端口,以及阿里云服务器安全组是否开放了80端口的访问权限。
转载申明
本文转载自智小约的Docker部署nginx(基础),若转载请注明来源,侵删。