【问题标题】:docker-compose not serving Nuxt.js website under localhost:3000docker-compose 不在 localhost:3000 下服务 Nuxt.js 网站
【发布时间】:2020-02-24 01:02:09
【问题描述】:

虽然我知道该课程是针对后端应用程序的,但我尝试为前端 Nuxt.js 应用程序制作 docker-compose.yml 和 Dockerfile。 我的 docker-compose.yml 文件如下所示:

version: '2.4'

services:
  web:
    build: .
    volumes:
      - .:/app
      - /app/node_modules/
    ports:
      - 3000:3000

任何我的 Dockerfile:

FROM node:13.0-alpine

ENV NODE_ENV=development

WORKDIR /app

EXPOSE 3000

COPY package.json yarn.lock* ./

RUN apk add --no-cache --virtual .build-deps alpine-sdk python \
 && yarn && yarn cache clean \
 && apk del .build-deps

ENV PATH=./node_modules/.bin/:$PATH

COPY . .

CMD ["nuxt"]

当我使用docker-compose up 运行它时,我的应用程序通过nuxt CMD 正确构建和启动,但是当我转到http://localhost:3000 时,应用程序不在线。

我在这里做错了什么?

【问题讨论】:

  • 两个常见的原因是开发服务器默认在容器私有 localhost 接口上提供服务(将其设置为在 0.0.0.0 上运行),或者使用 Docker 工具箱(使用 docker-machine ip 地址,通常为 192.168.99.100)。请记住,您的 volumes: 声明会主动阻止 Docker 更新您可能不想要的 node_modules 树。
  • 什么显示命令 docker-compose logs web ?
  • @DavidMaze 我在 Windows 10 Pro 上,所以我使用普通的 Docker 桌面而不是 Docker 工具箱,这样一个就被清除了。如何使容器服务于0.0.0.0 而不是内部本地主机?我敢打赌这就是原因?要更新我的依赖项,我使用 docker-compose run web yarn
  • @DavidMaze 0.0.0.0 的建议是正确的!我将 ENV NUXT_HOST=0.0.0.0 添加到我的 Dockerfile 中,它现在可以工作了。也许将您的建议作为答案发布,以便我接受...

标签: node.js docker docker-compose nuxt.js


【解决方案1】:

你的 cmd 应该是

CMD ["yarn", "dev"]

在 docker compose 中,您可以添加 line 命令并在需要时将其用于应用开发或启动。

version: '3'

services:
  web:
    build: .
    volumes:
      - .:/app
      - /app/node_modules/
    ports:
      - 3000:3000
    command: yarn dev 
    # or
    # command: yarn build && yarn start

【讨论】:

    猜你喜欢
    • 2020-11-03
    • 2019-11-14
    • 1970-01-01
    • 2019-07-24
    • 2018-04-29
    • 1970-01-01
    • 2017-02-13
    • 2020-02-16
    • 1970-01-01
    相关资源
    最近更新 更多