我比较推荐使用docker-compose去部署,方便管理。
文章部分引用了十分钟用Docker搭建功能齐全的Poste.io邮件服务器_网络存储_什么值得买
建议先进入root模式后再部署
1、安装准备工作,这里我使用的是Ubuntu24系统
sudo apt update && sudo apt upgrade -y
# 如果还没安装Docker,请先安装
# curl -fsSL https://get.docker.com -o get-docker.sh
# sudo sh get-docker.sh
# sudo systemctl enable docker
# sudo systemctl start docker
2、安装nginx,这里我是安装的openresty,用官方的dockerfile去构建的镜像
链接在这里docker-openresty/noble/Dockerfile at master · openresty/docker-openresty
可以直接下载,这个对应的就是Ubuntu系统
创建需要的目录
mkdir -p /data/openresty/{conf.d,lua,html,logs}
下载好Dockerfile,通过ftp上传到openresty这个目录
构建镜像前记得先准备两个配置文件,要不然最后会报错,直接下载官方提供的即可
openresty/docker-openresty: Docker tooling for OpenResty
openresty/docker-openresty: Docker tooling for OpenResty
两个链接的都要下载下来,也上传到openresty这个目录下
cd /data/openresty
//下载下来的文件一般会是txt的文件类型,这里构建前要先修改
mv Dockerfile.txt Dockerfile
docker build -t openresty_nginx . //.表示使用当前目录的Dockerfile,-t表示指定名字
接下来创建我们的docker-compose.yml文件
vim docker-compose.yml
输入法切换英文输入按 i ,粘贴以下代码
version: '3'
services:
nginx:
image: openresty_nginx
container_name: openresty
restart: unless-stopped
ports:
- "80:80" # 主机端口:容器端口
- "443:443" # 如果有 HTTPS
volumes:
- /data/openresty/conf:/etc/nginx/conf.d
- /data/openresty/lua:/etc/nginx/lua
- /data/openresty/logs:/usr/local/openresty/nginx/logs
- /data/openresty/html:/usr/local/openresty/nginx/html
networks:
- openresty-network
networks:
openresty-network:
external: true
name: openresty-network
我这里在docker-compose.yml中配置的是外部网络,所以创建容器前我们需要先创建nginx的网络,如果以后配置反向代理docker中的其他容器都需要加入这个网络才行
docker network create openresty-network
然后我们就可以开始创建容器
docker-compose up -d //-d表示在后台运行
3、容器创建成功后,我们就可以通过服务器的IP访问了,不出意外应该会出现以下画面

如果不成功大概率是防火墙没有放通相关端口,我们检查防火墙状态
systemctl status firewalld
返回running则代表防火墙正在运行,要开放特定端口,例如80端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
其中,--zone=public指定作用域,--add-port=80/tcp表示添加80端口,--permanent表示永久生效。
重新载入防火墙配置
添加端口后,需要重新载入防火墙配置使其生效:如果返回success,表示操作成功。
firewall-cmd --reload
查看已开放的端口
可以使用以下命令查看当前系统中所有已开放的端口:
firewall-cmd --zone=public --list-ports
关闭端口
如果需要关闭某个端口,例如80端口,可以使用以下命令:
firewall-cmd --zone=public --remove-port=80/tcp --permanent
然后重新载入防火墙配置:
firewall-cmd --reload
启动和停止防火墙服务
启动防火墙服务:
systemctl start firewalld
停止防火墙服务:
systemctl stop firewalld
设置防火墙开机自启:
systemctl enable firewalld
禁用防火墙开机自启:
systemctl disable firewalld
如果是云服务器,在提供云服务的服务商控制台添加入方向的防火墙规则即可,不需要以上操作

Comments NOTHING