docker部署vue3+express到服务器

express的dockerfile

FROM node

WORKDIR /app

COPY ./package.json /app/

RUN npm install

COPY . /app/

EXPOSE 3000

CMD node app.js

vue部分的dockerfile

FROM nginx
EXPOSE 3010
COPY /dist /usr/share/nginx/html
COPY nginx/default.conf /etc/nginx/conf.d/default.conf

其中default.conf文件内容为:

server {
    listen       3010;
    listen	 [::]:3010;
    server_name  localhost;

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

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    location ^~ /prod-api/ {              
	    proxy_pass http://xxx.xx.xx.x:xxx/;//express运行的服务器地址  
    }

    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
  
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
       root   /usr/share/nginx/html;
    }
}

docker拉取的nginx镜像默认配置,需要自行写一个配置去覆盖。

一些坑

我是在MacOs上开发的,docker打包的会默认为你当前运行环境。所以本地测试通过放在linux服务器会无法跑,甚至容器都无法启动。要添加制定版本去打包镜像。

docker build --platform linux/amd64 -t gorker-vue3-linux:latest .   

使用了element-plus中的Menu菜单作为Aside布局。其中:default-active属性起初为这么写的

  <el-menu
    class="el-menu-vertical-demo"
    text-color="#ffffff"
    active-text-color="#ffd04b"
    background-color="#5a3fba"
    :collapse="isCollapse"
    :default-active="this.$route.path"
    :router="true"
  >
</el-menu>

在本地运行无问题,打包到服务器上会报错 Cannot read properties of undefined (reading '$route')

解决方案为将this删除即修改为

  <el-menu
    class="el-menu-vertical-demo"
    text-color="#ffffff"
    active-text-color="#ffd04b"
    background-color="#5a3fba"
    :collapse="isCollapse"
    :default-active="$route.path"
    :router="true"
  >
</el-menu>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker部署Express+Vue3+Vite Web应用,您可以照以下步骤进行操作: 1. 首先,确保您已经安装了DockerDocker Compose。您可以从Docker官方网站下载并安装它们。 2. 在您的项目根目录下创建一个名为`Dockerfile`的文件,并添加以下内容: ```dockerfile # 使用 Node 14 作为基础镜像 FROM node:14 # 设置工作目录 WORKDIR /app # 复制 package.json 和 package-lock.json 到工作目录 COPY package*.json ./ # 安装项目依赖 RUN npm install # 复制项目文件到工作目录 COPY . . # 构建 Vue3 项目 RUN npm run build # 设置 Express 服务端口 ENV PORT=3000 # 暴露端口 EXPOSE 3000 # 运行 Express 服务器 CMD ["npm", "start"] ``` 在上述示例中,我们首先选择了一个Node 14作为基础镜像。然后,我们设置了工作目录,并复制`package.json`和`package-lock.json`到工作目录中。接下来,我们安装项目依赖并复制所有项目文件到工作目录中。然后,我们构建Vue3项目并设置了Express服务的端口。最后,我们暴露端口3000,并运行Express服务器。 3. 创建一个名为`docker-compose.yml`的文件,并添加以下内容: ```yaml version: '3' services: web: build: context: . dockerfile: Dockerfile ports: - 3000:3000 ``` 在上述示例中,我们定义了一个名为`web`的服务,使用了之前创建的Dockerfile进行构建。我们将主机的端口3000映射到容器的端口3000。 4. 在项目根目录下打开终端或命令提示符,运行以下命令启动Docker容器: ```bash docker-compose up -d ``` 这将使用`docker-compose.yml`文件中的配置启动一个名为`web`的容器,并将Express服务器运行在端口3000上。 5. 现在,您的Express+Vue3+Vite Web应用已经在Docker容器中运行起来了。您可以在浏览器中访问`http://localhost:3000`来查看应用程序。 请注意,上述示例假设您的Express服务器代码位于项目根目录下,Vue3和Vite应用程序位于Express的静态文件夹中。如果您的项目结构有所不同,请适当调整`Dockerfile`和`docker-compose.yml`文件中的路径。另外,根据您的具体需求,您可能需要进一步配置Docker容器以满足您的需求,比如添加数据库支持等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值