繁体   English   中英

在 docker 容器中运行 angular 通用应用程序

[英]Run angular universal application in docker container

# 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 目录,一切正常。 由于我不明白第二个应用程序目录是如何创建的,我似乎无法修复 Dockerfile。 我添加了几个调试命令,但是在构建容器时我看不到第二个应用程序目录。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM