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 小时前
【kubernetes - 1.28版本】-11 K8S核心组件
java·容器·kubernetes
时间售卖铺12 小时前
Docker实战:一键部署轻量级容器
运维·docker·云原生
淡海水13 小时前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
艾伦_耶格宇14 小时前
【kubernetes - 1.28版本】-10 K8S命名空间
云原生·容器·kubernetes
1-1=014 小时前
.NET Core 编译技术
.net·.netcore
tedcloud12316 小时前
Docker Compose 部署 Uptime Kuma:配置 HTTPS、QQ 邮箱告警与数据备份
服务器·网络协议·ui·docker·容器·https·开源
syntaxsage17 小时前
Dive:Docker 镜像层可视化分析工具
运维·其他·docker·容器
java_logo17 小时前
Docker 部署 Samba:轻松搭建局域网文件共享
运维·docker·容器·文件共享·samba·smb·轩辕镜像
todoitbo1 天前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
是枚小菜鸡儿吖1 天前
Home Assistant跨品牌智能家居教程:Docker部署、米家接入、vivo桥接与远程访问
docker·容器·智能家居