vue3项目部署到阿里云Alibaba Cloud Linux3系统的docker

前言:

免费文章请抬贵手点赞评论一下谢谢!文章本可以免费的,但是白嫖的大佬们都舍不得点赞评论一下。如果点赞评论跟阅读量不成比例,我可能很快就设置为VIP可读了。

一、背景

我的.netcore项目已经部署到服务器的docker中能运行了。具体方法参考如下连接:

netcore项目发布部署到阿里云linux系统Alibaba Cloud Linux3的docker

vue3项目跟.netcore项目部署到同一个docker中,放到不同的容器

二、vue3前端部署docker的配置文件

在web项目的根目录创建3个配置文件。内容可以参考下面的填。

1、vue3项目的 Dockerfile 内容

如果包含依赖安装和发布打包等各种操作一起的话,会非常慢,可以先用pnpm run build创建打包文件dist。

使用已发布的dist目录构建镜像的dockefile配置如下:

javascript 复制代码
# 使用Nginx作为基础镜像
FROM nginx:alpine

# 复制本地构建的 dist 目录
COPY dist /usr/share/nginx/html

# 复制 Nginx 配置
COPY nginx.conf /etc/nginx/nginx.conf

# 暴露端口
EXPOSE 80

# 启动 Nginx
CMD ["nginx", "-g", "daemon off;"]

2、nginx.conf配置文件

javascript 复制代码
user nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;  # 可以改成你的域名或IP

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
            # 关键配置:解决 Vue Router history 模式刷新404
            try_files $uri $uri/ /index.html;
        }

        # (可选)配置API请求的反向代理,解决跨域问题
        # location /api/ {
        #     proxy_pass http://你的后端服务地址:端口/;
        #     proxy_set_header Host $host;
        #     proxy_set_header X-Real-IP $remote_addr;
        #     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

3、创建 .dockerignore 文件

javascript 复制代码
node_modules
.git
.DS_Store
*.local
.env
.vscode
.idea

三、web项目生成镜像

1、在项目根目录使用powershell,输入命令生成镜像。

docker build -t zsmadmin-front -f Dockerfile .

2、导出镜像生成 tar 文件

docker save -o zsmadmin-front.tar zsmadmin-front:latest

四、在阿里云linux的docker部署前端

1、上传镜像文件到阿里云linux

使用ftp客户端把 tar 文件上传到阿里云linux

2、加载镜像

使用如下命令,用 tar 文件加载镜像,后面的路径为已上传的镜像文件。

sudo docker load -i /mnt/sftp/uploads/zsmadmin-font.tar

3、启动新容器,映射端口

zsmadmin-front-CT1 为容器名称,

启动新容器,映射5005端口

sudo docker run -d -p 80:80 --name zsmadmin-front-CT1 zsmadmin-front

检查容器状态

sudo docker ps

查看容器日志

sudo docker logs zsmadmin-front-CT1

四、浏览器验证

浏览器输入服务器的外网IP,验证是否部署成功。

一般会是你的前端站点无法访问后端接口报错,如下图,这个就只能自己修改源代码里的.env.production文件等的环境变量,改接口访问地址了,然后重新打包。我开始接口地址host用的localhost,不行我又改成服务器内网IP,再不行就改成外网IP,还不行就检查服务器的安全组规则限制是否放开了访问。

最后配置.env.production文件的接口地址还是用的外网IP成功的,说明容器之间网络是独立的,并不能共享局域网或者主机网络之类的。 所以还是要用compose.yml文件编排部署容器更好。

相关推荐
火车叼位11 小时前
Docker Compose 网络原理与实战:同一 Compose 服务间如何稳定通信
运维·docker·容器
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ13 小时前
ubuntu 安装部署docker教程
linux·ubuntu·docker
D愿你归来仍是少年15 小时前
Kubernetes(K8s)系统学习指南
容器·kubernetes
D愿你归来仍是少年15 小时前
Docker 深入学习指南
docker·容器
馨谙17 小时前
Kubernetes 核心技术之 Namespace:资源隔离与环境管理全解析
容器·kubernetes
道清茗17 小时前
【Kubernetes知识点问答题】Pod
云原生·容器·kubernetes
专家大圣17 小时前
告别智能家居品牌壁垒✨ Home Assistant+cpolar 让远程控家更省心
网络·docker·智能家居·内网穿透·cpolar
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ18 小时前
Docker的介绍及使用
docker
ai产品老杨19 小时前
终结协议孤岛:基于GB28181/RTSP融合网关的多品牌设备统一接入与边缘推流方案
人工智能·docker·架构·kubernetes·音视频