Linux Docker 部署openresty nginx

recallmc 发布于 2026-01-24 165 次阅读


我比较推荐使用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

如果是云服务器,在提供云服务的服务商控制台添加入方向的防火墙规则即可,不需要以上操作