我有以下Dockerfile(正在构建Vue.js应用):
# build stage
FROM node:lts-alpine as build-stage
RUN apk add gettext libintl
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
ARG API_URL
RUN envsubst < ./src/config.js.tmpl > ./src/config.js
RUN ls
RUN npm run build
RUN ls
# production-stage
FROM nginx:stable-alpine as production-stage
ARG API_PROXY_PATH
ARG SERVER_NAME
COPY --from=build-stage /app/dist /usr/share/nginx/html
COPY ./nginx/prod.conf.tmpl /temp/prod.conf.tmpl
RUN envsubst '$API_PROXY_PATH $SERVER_NAME' < /temp/prod.conf.tmpl > /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
这在我的Windows机器(带有Docker Toolbox)和Centos7机器上正常工作。应用程序构建并运行良好。
但是,当我尝试在使用Ubuntu 18.04(也尝试过16.04)的服务器上构建此服务器时,npm run build
似乎无法正常工作。它照常运行,不会引发任何错误,但是在缺少构建dist
文件夹之后,第二阶段失败了。
在Windows和Centos桌面上,第二个ls
命令显示以下内容:
Dockerfile
README.md
babel.config.js
dist
nginx
node_modules
package-lock.json
package.json
public
src
但是在Ubuntu dist
文件夹中没有出现。
Dockerfile
README.md
babel.config.js
nginx
node_modules
package-lock.json
package.json
public
src
Docker和docker-compose版本相同。为什么会发生这种情况以及如何解决? 我不知道:(谢谢。
UPD :我尝试创建Centos服务器,尽管它在Centos桌面上可以正常运行,但它显示出相同的行为(未创建dist文件夹)。在这两种情况下,代码都是通过git clone从github检索的。因此,可能不是操作系统问题。
UPD2 :发生了非常奇怪的事情。我已经在所有可能的地方进行了测试,但是未能重现,因此我的假设是该问题与我的VPS提供商有某种联系。在Windows桌面(Docker工具箱),Centos7桌面,VirtualBox中的Ubuntu桌面和VB中的Ubuntu服务器以及在其他VPS提供程序的虚拟机上,该构建都可以正常工作。我最初的VPS提供商无法在VPS(Ubuntu和Centos7)上使用它。我将联系他们的支持。
以下是要复制的存储库:https://github.com/DanielTitkov/pagie 可以按原样使用docker-compose进行构建,只有.env.dist应该重命名为.env