在Docker容器中运行Angular Universal应用程序。

3
# common base image for development and 
FROM node:10.15.3 AS 
WORKDIR /app

ARG SC_NPM_TOKEN
ENV SC_NPM_TOKEN="${SC_NPM_TOKEN}"

# dev image contains everything needed for testing, development and building
FROM base AS development
COPY . /app

# install all dependencies and add source code
RUN npm install
RUN npm install -g @angular/cli@7.3.9

# builder runs unit tests and linter, then builds production code 
FROM development as builder
RUN npm run build:ssr --prod --output-path=dist
# RUN ls -ls ../
# RUN ls -ls .
# RUN pwd

# release includes bare minimum required to run the app, copied from builder
FROM base AS release
COPY --from=builder /app/dist /app/dist
COPY --from=builder /app/package.json /app/

ENV NODE_ENV "production"
ENV PORT 3000

EXPOSE 3000
CMD ["npm", "run ", "serve:ssr"]

当我使用这个Dockerfile的时候,容器可以被构建,并且nodejs应用程序也启动了。如果我尝试访问 / 路径,会抛出以下错误:Failed to lookup view "index" in views directory "/app/dist/browser"
我查看了容器内部并发现文件存储在 /app/app/ 中。怎么可能有第二个 app 目录呢?如果我将文件移动到 /app 目录中,一切都能正常工作。由于我不明白第二个 app 目录是如何创建的,所以无法修复 Dockerfile。我添加了一些调试命令,但是在构建容器时看不到第二个 app 目录。

你是如何运行容器的?(你是否使用了 docker run -v 或 Docker Compose 的 volumes: 选项来隐藏镜像中的 /app 目录?) - David Maze
你可能是对的。我在本地机器上让图像工作了。但是一旦我使用Github操作构建它并在Rancher中启动它,它就会出问题。找不到任何卷或类似的东西,还有其他的猜测吗? - Lucas
1个回答

0

我们不知道问题出在哪里,但我们找到了一个解决方法。当容器通过github仓库中定义的操作构建时,问题才会发生。一旦我们复制了存储库(在github上创建新存储库,从项目中删除.git,推送到新存储库),新的自动构建容器就可以正常工作了。可能是缓存问题,但由于时间有限,我们现在很高兴它能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接