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