【问题标题】:How to put a Svelte app in a docker container?如何将 Svelte 应用程序放入 docker 容器中?
【发布时间】:2020-04-08 17:24:25
【问题描述】:

标题几乎说明了一切。我对网络开发非常陌生。

我使用npx degit sveltejs/template ... 创建了一个 Svelte 应用程序。现在我使用npm run devnpm start 在本地运行它。

据我了解,这是一个 Node 服务器,但适应他们的 official tutorial 并没有让我走得太远。

我找到了一个关于这个的blog post,但它并没有完全解释如何对接现有的 Svelte 应用程序,而是指向官方模板的 fork

【问题讨论】:

    标签: node.js docker svelte


    【解决方案1】:

    您可以在您的应用目录中放置一个Dockerfilepackage.json 所在的位置):

    FROM node:14-alpine
    
    WORKDIR /usr/src/app
    
    COPY rollup.config.js ./
    COPY package*.json ./
    
    RUN npm install
    
    COPY ./src ./src
    COPY ./public ./public
    
    RUN npm run-script build
    
    EXPOSE 5000
    
    ENV HOST=0.0.0.0
    
    CMD [ "npm", "start" ]
    

    构建本地镜像:

    $ docker build -t svelte/myapp .
    

    然后运行它:

    $ docker run -p 5000:5000 svelte/myapp
    

    【讨论】:

    • 抱歉,现在才开始尝试您建议的解决方案。谢谢!
    • 您能否修改您的答案,添加每次执行构建的步骤?否则,必须在每次 Docker 构建之前手动构建。这是我最终使用的代码。 ``` FROM node:14-alpine WORKDIR /usr/src/app COPY rollup.config.js ./ COPY package*.json ./ RUN npm install COPY ./src ./src COPY ./public ./public RUN npm运行脚本构建 EXPOSE 5000 ENV HOST=0.0.0.0 CMD [ "npm", "start" ] ``
    • @ticofab 我无法取回所有我得到的任何页面是我部署在我的 docker 映像中的 404 错误可能是什么原因造成的?
    • 有没有人设法在 Rollup 上启用 Watch 来完成这项工作?我已将 /src 目录作为卷挂载并验证容器内的文件已更新,但启用了监视的 npm run dev Rollup 进程没有对文件的更改做出反应。
    • @GarethOates 我当前的解决方法(在带有 docker 工具箱的 Windows 上)是在 docker 容器中的主机和 sirv 上并行运行汇总,并将 src/ 和公共目录镜像为 docker 卷。 (或者,将 public/ 镜像到基本的 Web 服务器容器应该是一种更简单的解决方法。)
    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 2020-01-16
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    相关资源
    最近更新 更多