如何在 docker 中启动 vuejs s-s-r 服务器

Posted

技术标签:

【中文标题】如何在 docker 中启动 vuejs s-s-r 服务器【英文标题】:how to start vuejs s-s-r server in docker 【发布时间】:2021-08-20 20:30:25 【问题描述】:

我有一个带有 @akryum/s-s-r 的 vuejs 应用程序

在做的时候

npm run s-s-r:serve

npm run s-s-r:start

一切正常。但是当我尝试使用docker时:

version: '3.7'

services:
  npm:
    build:
      context: ./
    ports:
      - "8080:8080"
    volumes:
      - ./:/var/www/html

Dockerfile

FROM node:14.0.0

WORKDIR /var/www/html

EXPOSE 8080

CMD ["npm", "run", "serve"]

只有不带 s-s-r 的选项有效:npm run serve

使用

CMD ["npm", "run", "s-s-r:start"]

我打开 http://localhost:8080/ 并得到错误

ERR_CONNECTION_RESET

在我的 package.json 中

  "scripts": 
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "s-s-r:build": "vue-cli-service s-s-r:build",
    "s-s-r:serve": "vue-cli-service s-s-r:serve",
    "s-s-r:start": "PORT=8080 cross-env NODE_ENV=production vue-cli-service s-s-r:serve --mode production"
  ,

在启动时我看到

npm_1  | [16:36:39] Server listening on localhost:8080

表示端口正确

【问题讨论】:

【参考方案1】:

我找到了解决办法!

在 package.json 中添加 --host '0.0.0.0'

"s-s-r:start": "cross-env NODE_ENV=production vue-cli-service s-s-r:serve --mode production --host '0.0.0.0' --port 8080"

【讨论】:

以上是关于如何在 docker 中启动 vuejs s-s-r 服务器的主要内容,如果未能解决你的问题,请参考以下文章

Docker、NodeJs、Vuejs:无法使用 localhost 访问

vuejs 应用程序不使用 dockerized npm 运行

如何在docker中启动应用

如何在docker中启动应用

如何将 vuejs 项目部署到 heroku

如何在 gitlab CI 中访问被测试的 dockerized 应用程序