【问题标题】:Dockerize vue projectDockerize vue 项目
【发布时间】:2021-01-09 22:26:37
【问题描述】:

我已经通过 cli 安装了一个简单的 vue 项目。 我已经创建了 Dockerfile 和 docker-compose.yml 文件。

但是在 docker-compose build && docker-compose up 我得到 404 页面

项目结构

  • 简单聊天
    • 码头工人
      • docker-compose.yml
      • Dockerfile
    • 公开
    • 源代码
    • package.json

命令

cd docker 
docker build -t simple-chat .. 
winpty docker run -it -p 8080:8080 --rm --name simple-chat simple-chat

正确打开http://localhost:8080

命令

docker-compose build --no-cache 
docker-compose up

在浏览器中返回 404 页面

我做错了什么?

Dockerfile

FROM node:lts-alpine
RUN npm install -g http-server

WORKDIR /app/simple-chat

COPY ../package*.json ./
RUN yarn install
COPY ../ .
RUN yarn build

EXPOSE 8080
CMD [ "http-server", "dist", "--host", "0.0.0.0"]

docker-compose.yml

version: '3.5'
services:

  simple-chat:
    build:
      context: ../
      dockerfile: docker/Dockerfile
    image: simple-chat
    ports:
      - '8080:8080'
    volumes:
      - ../:/app/simple-chat

【问题讨论】:

  • 通过使用volumes,您并没有将应用程序容器化,因为您想从本地文件夹运行并组合,如果只有一个服务,您甚至不需要使用它,对吧? docker run 最终会运行它...

标签: docker vue.js docker-compose dockerfile


【解决方案1】:

回答

你弄错了Dockerfile上的http-server路径

CMD [ "http-server", "/app/simple-chat/dist"]

如果您想要容器化应用程序(复制 Dockerfile 上的所有内容),请从 compose 中删除 volumes:,否则从 Dockerfile 中删除 COPY 并设置 volumes:

考虑

  1. 可以在没有 vuecli 的情况下构建 vuecli 应用,但您知道一些注意事项,请参阅此 stackoverflow 帖子。

【讨论】:

  • OP 可能在 Windows 下运行 docker,参见例如this SO question 处理 winpty。
  • 另外,你只说docker-compose不是必须的,但是OP提出的问题的症结可能是意想不到的volumes:字段,应该删除,正如@所指出的那样987654323@
  • 最后,请注意即使只有一个容器,docker-compose 仍然可以方便地使用单个命令 (docker-compose up) 轻松运行容器,避免一长串 CLI 参数和依赖于“声明性规范”(docker-compose.yml):参见例如this SO answer 在这里我给出了一个工具的指针,该工具可以自动化 docker-compose.yml 文件的生成。
  • @ErikMD 我用你的建议更新了答案
  • 好的!但似乎您实际上并没有考虑到它们? (关于docker-compose :)
猜你喜欢
  • 2017-10-20
  • 1970-01-01
  • 2022-01-23
  • 2021-10-06
  • 2019-07-22
  • 2018-01-14
  • 1970-01-01
  • 2020-08-18
  • 2020-05-10
相关资源
最近更新 更多