Запустите угловое универсальное приложение в докер-контейнере - PullRequest
1 голос
/ 23 октября 2019
# 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. Если я пытаюсь получить доступ к / route, выдается следующая ошибка: Failed to lookup view "index" in views directory "/app/dist/browser".

Я заглянул внутрь контейнера и увидел, что файлы хранятся в / app / app /. Как может быть второй каталог приложения? Если я перемещаю файлы в каталог / app, все работает нормально. Поскольку я не понимаю, как создается второй каталог приложения, я не могу исправить Dockerfile. Я добавил пару команд отладки, но не вижу второй каталог приложения при сборке контейнера.

1 Ответ

0 голосов
/ 29 октября 2019

Мы не знаем, в чем проблема, но мы нашли обходной путь. Проблема возникает, только когда контейнер создается с помощью действия, определенного в репозитории github. Как только мы продублировали репозиторий (создание нового репо на github, удаление .git из проекта, загрузка в новое репо), новый автоматически созданный контейнер просто заработал. Может быть проблема с кешированием, но из-за ограниченного времени мы просто рады, что это работает на данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...