【问题标题】:docker webpack compiled files missing when runningdocker webpack运行时编译文件丢失
【发布时间】:2016-12-10 15:09:09
【问题描述】:

我遇到了一个问题,我确信这对 docker 专家来说非常明显,但我却迷失了。

下面是我的 dockerfile,我在其中添加了一些“ls”,以便查看 webpack 生成的文件。

第一个“ls”正确显示

Step 8 : RUN ls server/public
 ---> Running in 67bc7ee5f832
bundle.css
bundle.js
index.html

但第二个 ls 不是

web_1    | index.html

Dockerfile:

FROM node:6.2

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/

RUN npm i

COPY . /usr/src/app/

# Build Static Resources
RUN npm run build

# ls here shows correct files
RUN ls server/public

# Bundle app source

ENV NODE_ENV=production

# ls here doesn't show compiled files
CMD ls server/public && npm start

EXPOSE 3000

我错过了什么?为什么nodejs运行后这些bundle.css/js没有出现在浏览器中?

如何检查目录是否复制正确?

谢谢

【问题讨论】:

    标签: node.js docker webpack docker-compose


    【解决方案1】:

    RUN 定义了在图像的docker build 期间执行的步骤。

    CMD 定义了在您docker run 容器时执行的默认命令(或传递给ENTRYPOINT 的参数,如果已定义)。

    请注意,Docker 还缓存层,因此如果您执行另一个构建,如果 Docker 在同一前一层的哈希上找到此确切命令的结果图像,则将跳过 RUN ls

    要查看容器内部,您可以运行 shell 来浏览它:

    docker run -it --rm your_image_name /bin/bash

    由于你传递了/bin/bash,默认的CMD会被绕过,只会启动一个shell。

    【讨论】:

    • 我的问题是我试图将我的存储库 git pull 到远程服务器上;在那里构建图像,然后使用不起作用的“docker-compose up”(仍然不确定我理解为什么)。相反,现在我在本地构建图像,将它们上传到 docker hub,然后将它们拉到远程服务器上并单独运行它们,它们按预期工作
    • 回过头来看,我预计问题是在撰写文件中完成了卷装载。没有那个文件,这只是一个猜测。 @Nachiket,请用你的文件打开一个新问题,cmets 不是问答的好地方。
    猜你喜欢
    • 2021-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 2015-03-10
    • 1970-01-01
    相关资源
    最近更新 更多