Приложение Access Angular в контейнере Docker - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь запустить приложение Angular внутри док-контейнера, но не могу получить к нему доступ при переходе на http://localhost:4200. Когда я запускаю приложение, я вижу обычные журналы углов, но я не могудоступ к нему из моего браузера.

Я попытался открыть порт 4200, указать порт при запуске приложения "docker run -p 4200: 4200 angular-example" и указать хост и порт в команде ng serveно ни одна из этих манипуляций не сработала.

Мой Dockerfile

# base image
FROM node:12.2.0

# install chrome for protractor tests
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
RUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
RUN apt-get update && apt-get install -yq google-chrome-stable

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package.json /app/package.json
RUN npm install node-sass
RUN npm install
RUN npm install -g @angular/cli@7.3.9

# add app
COPY . /app

EXPOSE 4200

# start app
CMD ng serve --host 0.0.0.0 --port 4200

Команда, которую я использовал для запуска образа

docker run -p 4200:4200  angular-example

и журналы, которые я получаю при запуске приложения

WARNING: This is a simple server for use in testing or debugging Angular applications
locally. It hasn't been reviewed for security issues.

Binding this server to an open connection can result in compromising your application or
computer. Using a different host than the one passed to the "--host" flag might result in
websocket connection issues. You might need to use "--disableHostCheck" if that's the
case.
** Angular Live Development Server is listening on 0.0.0.0:4200, open your browser on http://localhost:4200/ **

Date: 2019-10-13T04:08:51.354Z
Hash: 518bf687971012e084e7
Time: 89920ms
chunk {main} main.js, main.js.map (main) 304 kB [initial] [rendered]
chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 237 kB [initial] [rendered]
chunk {runtime} runtime.js, runtime.js.map (runtime) 6.08 kB [entry] [rendered]
chunk {styles} styles.js, styles.js.map (styles) 178 kB [initial] [rendered]
chunk {vendor} vendor.js, vendor.js.map (vendor) 7.82 MB [initial] [rendered]
ℹ 「wdm」: Compiled successfully.

Я получаю ERR_CONNECTION_REFUSED, когда запускаю приложение, а не достигаю реального приложения.

Ответы [ 2 ]

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

Я узнал, почему я не смог получить доступ к своему контейнеру с помощью localhost. Причина была в том, что я использовал Docker Quickstart, который отображает мой контейнер на 192.168.99.100. Тогда я смог добраться до моей заявки.

Спасибо за помощь

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

Я недавно работал над проектом Angular, который развертывает его на контейнере Docker. Это пример Dockerfile.

Команда Docker:

docker build -t your-app-name .
docker run -itd -p 4200:80 --name=your-app-name your-app-name

В Dockerfile:

### STAGE 1: Build ###

FROM node:10-alpine as builder

COPY package.json package-lock.json ./

RUN npm set progress=false && npm config set depth 0 && npm cache clean --force

## Storing node modules on a separate layer will prevent unnecessary npm installs at each build
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app

WORKDIR /ng-app

COPY . .

## Build the angular app in production mode and store the artifacts in dist folder
RUN $(npm bin)/ng build --prod --build-optimizer

### STAGE 2: Setup ###

FROM nginx:1.17.0-alpine

## Copy our default nginx config
COPY nginx/default.conf /etc/nginx/conf.d/

## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*

## From 'builder' stage copy over the artifacts in dist folder to default nginx public folder
COPY --from=builder /ng-app/dist/your-app-name /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...