docker 离线部署前端项目,附防火墙相关操作

#上传nginx镜像
#将nginx加入docker
docker load -i nginx.tar
#查看docker镜像
docker images
# 这里的nginx镜像不需要运行,作为后面项目的依赖项


# 创建一个用于 生成前端项目 docker镜像 操作 相关文件的目录,如:
cd /home/docker/
#创建目录
mkdir ${项目名称}
cd ${项目名称}
#创建前端文件夹
mkdir web
cd web

#将编译好的前端dist目录放入web目录


#创建 Dockerfile 用于创建自定义镜像
vim Dockerfile
#文件内容,如下:(注意:Dockerfile里#注释必须单独一行,不能放置在命令后,否则报错)
------------
#从已有的镜像加载nginx
FROM nginx

#开放端口

EXPOSE 80

EXPOSE 443

#设置作者
MAINTAINER chobits
#设置镜像文件
COPY dist/ /usr/share/nginx/html/
#设置nginx配置文件
COPY nginx/nginx.conf /etc/nginx/nginx.conf
--------------------------------------
#之后创建配置nginx文件


vim nginx.conf
#文件内容:
--------------------------------------------
#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
   
    keepalive_timeout  65;

    gzip  on;
    


server {
        listen       8087;
        root "/usr/share/nginx/html";
        
        index index.html;
        #location /ytswItem/ {
        #    proxy_pass http://127.0.0.1:8081/;
        #}
        location  /  {
            try_files $uri $uri/ @router;
            index index.html;    
        }
        location @router  {
            rewrite ^.*$ /index.html last;
        }
        
      
    }

}
------------------------------------------------
#编译生成镜像,将自定义镜像导入至docker 中,重点的是后面这个 “ . ” 一定要加; imageName 必须小写
docker build -t ${imageName} .
# 运行镜像,-p 宿主机端口:内部端口;-v 宿主机项目文件路径:内部文件路径;映射文件后当项目修改后,只需要覆盖宿主机项目文件即可
docker run -d -p 81:80 --name ${dockerName} -v  /usr/local/laomo/web/dist/:/usr/share/nginx/html/ ${imageName}

#防火墙开启81端口,注意:修改完要重启防火墙

//查看已开放的端口
firewall-cmd --list-ports

//开放端口
firewall-cmd --zone=public --add-port=端口号/tcp --permanent

连续端口可以这样写:

firewall-cmd --zone=public --add-port=21115-21119/tcp --permanent
还有udp端口:

firewall-cmd --zone=public --add-port=21116/udp --permanent


//关闭端口
firewall-cmd --zone=public --remove-port=3338/tcp --permanent

//查看防火墙状态
systemctl status firewalld.service
//关闭防火墙状态
systemctl stop firewalld.service
//禁用防火墙
systemctl disable firewalld.service

//重启防火墙
firewall-cmd --reload

//开启防火墙
systemctl start firewalld.service

 

posted @ 2022-09-26 16:51  dirgo  阅读(206)  评论(0编辑  收藏  举报